Gói Debian nên tạo tài khoản người dùng như thế nào?


33

Gói qqq.debcài đặt chương trình qqqsẽ chạy từ uqqqtài khoản người dùng. Gói này bao gồm qqqchương trình, qqq.conftập tin cấu hình và /etc/init.d/qqqinitscript.

Gói nên quản lý việc tạo người dùng uqqqnhư thế nào? Có bất kỳ thực hành tốt nhất hoặc hướng dẫn chính thức về điều này?

  1. Chỉ cần tạo người dùng tự động uqqqtrong postinst;
  2. Tạo người dùng tự động khi khởi động đầu tiên từ /etc/init.d/qqqtập lệnh;
  3. Tạo người dùng tự động khi khởi động qqqchương trình lần đầu tiên (không có đối số)
  4. Không tạo bất kỳ tài khoản người dùng nào, từ chối bắt đầu trừ khi người dùng được quản trị viên tạo rõ ràng (ví dụ: sử dụng qqq --create-user);
  5. Không tạo bất kỳ tài khoản người dùng nào, chạy không an toàn từ root theo mặc định;
  6. Tương tác hỏi trong postinst, init.d script hoặc qqqchính nó có tạo người dùng hay không.

Gói có nên xóa tài khoản người dùng khi gỡ cài đặt không?


7
Cách dễ nhất là đi đến câu trả lời của câu hỏi này là xem xét các tập lệnh trước / sau khi cài đặt của các gói Debian chính thức. Chỉ cần chạy grep adduser /var/lib/dpkg/info/*.postinsttrên bất kỳ hệ thống dựa trên Debian nào để có được nhiều ví dụ.
jofel

Khi adduserđược sử dụng, nó cũng cần phải phụ thuộc vào gói. Xem: lintian.debian.org/tags/ từ
Lekensteyn

Câu trả lời:


22

Wiki Debian có một số hướng dẫn cụ thể và toàn diện hơn Hướng dẫn chính sách Debian đã được đề cập. Xem Tài khoảnHandlingInMaintainerScripts :

Chương trình adduser thực hiện đúng nếu được gọi với tùy chọn --system. Do đó thường chỉ cần gọi

người dùng - hệ thống $ USERNAME

trong bài đăng của bạn để tạo tài khoản với thông tin đăng nhập bị vô hiệu hóa, một nhóm chính của nogroup và một thư mục chính bên dưới / home. Nếu bạn muốn các tùy chọn khác, thêm chúng như bạn muốn.

Thông thường không cần thiết phải kiểm tra chéo với getent xem tài khoản đã tồn tại chưa vì adduser - hệ thống thường làm đúng. Nếu không, vui lòng báo cáo lỗi đối với người dùng để giữ cho tập lệnh bảo trì của bạn đơn giản.

Lời khuyên mà nó cung cấp về việc xóa tài khoản là không thuyết phục. Tuy nhiên, tôi sẽ lưu ý rằng lời khuyên tương ứng cho fedora không tương đương.

Không xóa người dùng hoặc nhóm Chúng tôi không bao giờ xóa người dùng hoặc nhóm được tạo bởi các gói. Không có cách nào lành mạnh để kiểm tra xem các tệp thuộc sở hữu của những người dùng / nhóm đó có bị bỏ lại không (và thậm chí nếu có, chúng tôi sẽ làm gì với họ?) Và để lại những quyền sở hữu được chỉ ra cho người dùng / nhóm không tồn tại có thể dẫn đến các vấn đề bảo mật khi người dùng / nhóm không liên quan về mặt ngữ nghĩa được tạo sau đó và sử dụng lại UID / GID. Ngoài ra, trong một số thiết lập, việc xóa người dùng / nhóm có thể không thực hiện được hoặc / cũng không mong muốn (ví dụ: khi sử dụng cơ sở dữ liệu nhóm / người dùng từ xa được chia sẻ). Dọn dẹp người dùng / nhóm không sử dụng được để lại cho quản trị viên hệ thống để chăm sóc nếu họ mong muốn.


12

Là quản trị viên cài đặt các gói, tôi hy vọng các gói của mình sẽ tự động tạo người dùng mà họ yêu cầu trước hoặc sau, để mọi tệp được người dùng yêu cầu có thể được thực hiện trước khi chương trình được chạy.

Chương trình của bạn chỉ nên chạy với quyền root nếu nó cần (ví dụ: liên kết với cổng đặc quyền) và lý tưởng là bỏ các đặc quyền của nó sau khi hoàn thành việc thực hiện những gì cần thiết root.

Bạn có thể xem cách các gói (đã cài đặt) khác đã xử lý việc này bằng cách sử dụng

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

và đọc các tệp được liệt kê (hầu hết mất nhiều hơn một dòng tùy chọn).

Thật kỳ lạ, tất cả trừ một trong những gói đã cài đặt của tôi tạo người dùng sử dụng adduserđể thêm người dùng, nhưng gói adduser không phải là gói bắt buộc, vì vậy gói của bạn sẽ phải được xây dựng để phụ thuộc vào nó. Các useraddchương trình được sử dụng bởi các gói libuuid1, và là một phần của passwdgói đó là một gói phần mềm theo yêu cầu.


1
Điều đó thật tồi tệ, hãy kiểm tra cách thức phù hợp để tạo các tập lệnh trước thay vì hack thủ công.
LtWorf

các --quietphương pháp tiếp cận có vẻ rất phổ biến
vidstige

6

Mục 10.9. Quyền và chủ sở hữu trong Hướng dẫn chính sách Debian có những gì bạn đang tìm kiếm (từ "phiên bản 3.9.5.0, 2013-10-28"):

Nếu bạn cần tạo một người dùng hoặc nhóm mới cho gói của mình, có hai khả năng. Trước tiên, bạn có thể cần phải làm cho một số tệp trong gói nhị phân được sở hữu bởi người dùng hoặc nhóm này hoặc bạn có thể cần phải biên dịch id người dùng hoặc nhóm (thay vì chỉ tên) thành nhị phân (mặc dù vậy nên tránh cái sau này có thể, như trong trường hợp này bạn cần một id được phân bổ tĩnh).

Nếu bạn cần id được phân bổ tĩnh, bạn phải yêu cầu id người dùng hoặc nhóm từ gói base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of thecơ sở-passwd 'với id có trong /etc/passwd' or / etc / group' hoặc sắp xếp cho gói của bạn để tạo chính người dùng hoặc nhóm chính xác id (sử dụng adduser') in itspreinst 'hoặc postinst'. (Doing it in thepostinst' sẽ được ưu tiên nếu có thể, nếu không sẽ cần phụ thuộc trước vào gói 'adduser'.)

Lưu ý: Danh sách debian-devel là khá tích cực và trả lời câu hỏi như vậy quá (mặc dù ví dụ đó là từ năm 2003).


3
Vì vậy, câu trả lời đơn giản ngắn là "Sử dụng addusertrong postinst".
Vi.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.