Adduser làm gì mà useradd không?


71

Ngoài việc phổ biến rộng rãi hơn useradd, các hệ thống dựa trên Debian cũng chứa một adduserlệnh bổ sung cung cấp giao diện cấp cao hơn để thêm người dùng và một số tác vụ liên quan. Có nhiều câu hỏi / câu trả lời khác nhau trên các trang SE khác, trong đó nêu chi tiết về sự khác biệt cơ bản giữa các lệnh này, ví dụ:

Hầu hết các câu trả lời về cơ bản nói rằng addusercung cấp giao diện đẹp hơn để thêm người dùng tương tác, nhưng không cung cấp nhiều chi tiết về những gì xảy ra khi adduserchạy mà không được so sánh với useradd. Vì thế:

  1. Điều đó không adduserlàm useraddgì?
  2. Tôi cần sử dụng những lệnh nào để tạo ra kết quả tương đương?

Câu trả lời:


79

Trước hết, đoạn trích trang man tương ứng làm nổi bật sự khác biệt giữa hai lệnh và đưa ra một số dấu hiệu cho thấy điều gì đang xảy ra. Dành cho adduser:

adduser và addgroup thêm người dùng và nhóm vào hệ thống theo các tùy chọn dòng lệnh và thông tin cấu hình trong /etc/adduser.conf. Chúng là các giao diện thân thiện với các công cụ cấp thấp như chương trình useradd, groupadd và usermod, theo mặc định, chọn các giá trị UID và GID tuân thủ chính sách Debian, tạo thư mục chính với cấu hình khung xương, chạy tập lệnh tùy chỉnh và các tính năng khác.

Sau đó cho useradd:

useradd là một tiện ích cấp thấp để thêm người dùng. Trên Debian, quản trị viên thường nên sử dụng adduser (8) thay thế.

Nghiên cứu sâu hơn addusercho thấy rằng đó là một tập lệnh perl cung cấp giao diện cấp cao, và do đó cung cấp một số chức năng của các lệnh sau:

  • useradd
  • groupadd
  • passwd - được sử dụng để thêm / thay đổi mật khẩu người dùng.
  • gpasswd - được sử dụng để thêm / thay đổi mật khẩu nhóm.
  • usermod - được sử dụng để thay đổi các thông số liên quan đến người dùng khác nhau.
  • chfn - được sử dụng để thêm / thay đổi thông tin bổ sung được tổ chức trên người dùng.
  • chage - được sử dụng để thay đổi thông tin hết hạn mật khẩu.
  • edquota - được sử dụng để thay đổi hạn ngạch sử dụng đĩa.

Một lệnh cơ bản của adduserlệnh như sau:

adduser username

Lệnh đơn giản này sẽ thực hiện một số điều:

  1. Tạo tên người dùng username.
  2. Tạo thư mục chính của người dùng (mặc định là /home/usernamevà sao chép các tệp từ /etc/skelđó.
  3. Tạo một nhóm có cùng tên với người dùng và đặt người dùng vào đó.
  4. Nhắc mật khẩu cho người dùng.
  5. Nhắc nhở để biết thêm thông tin về người dùng.

Các useraddchương trình của hầu hết có thể thực hiện hầu hết các điều này, tuy nhiên nó không làm như vậy theo mặc định và nhu cầu tùy chọn bổ sung. Một số thông tin yêu cầu nhiều lệnh hơn:

useradd -m -U username
passwd username
chfn username

Lưu ý rằng adduserđảm bảo rằng các UID và GID được tạo phù hợp với chính sách Debian . Tạo người dùng bình thường với useraddvẻ là ok, với điều kiện UID_MIN/ UID_MAXtrong /etc/login.defsphù hợp với chính sách Debian. Vấn đề là gì khi Debian chỉ định một phạm vi cụ thể cho các UID người dùng hệ thống dường như chỉ được hỗ trợ /etc/adduser.conf, do đó, việc thêm một người dùng hệ thống vào useraddvà không chỉ định UID / GUID trong phạm vi chính xác sẽ tiềm ẩn nhiều vấn đề nghiêm trọng.

Một cách sử dụng phổ biến khác adduserlà để đơn giản hóa quá trình thêm người dùng vào một nhóm. Ở đây, lệnh sau:

adduser username newgroup

thay thế một usermodlệnh phức tạp hơn yêu cầu các nhóm mà người dùng đã là thành viên của (và bạn muốn người dùng vẫn là thành viên) được chỉ định:

usermod -G all,other,groups,user,is,in,newgroup

Một nhược điểm của việc sử dụng adduserở đây là bạn chỉ có thể chỉ định một nhóm tại một thời điểm.


Thật tuyệt! Tôi thậm chí không biết đây là một câu hỏi. Liệu nó có lấy mật khẩu băm như useradd không? Đây là một công việc rất tốt
mikeerv

Tôi không biết liệu tôi có hoàn toàn đồng ý với tuyên bố "quản trị viên nên ..." hay không ... Cá nhân tôi tin rằng quản trị viên có thể nên tự mình kết adduserhợp theo chính sách của toàn hệ thống, nhưng đó chỉ là ghế bành tốt nhất
mikeerv

@mikeerv, không có mật khẩu băm. Có một chương trình khác bạn nên biết về mặc dù - chpasswd- điều này có thể chấp nhận mật khẩu băm trên stdin. Tôi sẽ đợi đến ngày mai trước khi tôi cập nhật câu trả lời khác mặc dù tôi nghĩ.
Graeme

bài đăng hay. Đối với tôi một chút quá nhiều chi tiết. Điều tôi nhớ nhất là, adduserban đầu được tạo cho quản trị viên máy chủ, những người thường xuyên cần thiết để tạo / sửa đổi / giới hạn người dùng thực sự như trên máy chủ email tại trường đại học. Với adduserbạn có thể tự động hóa quá trình. Điều này đã thay đổi một chút trong những năm qua vì vậy ngày nay useraddcó thể gây khó khăn cho nhiều quản trị viên và đối với họ adduserđã trở thành công cụ được lựa chọn.

Trên Ubuntu 16.04 của tôi, -U/ --user-groupdường như là mặc định.
Franklin Yu

2

Lệnh adduser theo mặc định cũng tạo một thư mục / home / user cho người dùng hệ thống, điều mà bạn không thể làm với lệnh useradd . useradd chỉ thêm các thư mục nhà cho người dùng bình thường không phải người dùng hệ thống.


1

Quản trị viên hệ thống có thể làm bất cứ điều gì với useradd có thể được thực hiện với adduser. Ở đây đã tuyên bố rằng bạn không thể tạo thư mục / home / user cho người dùng hệ thống với useradd và bạn hoàn toàn có thể, bằng cách sửa đổi các tệp có trong / etc / skel. / etc / skel chứa tập hợp các tệp ban đầu được sử dụng để điền vào thư mục chính của người dùng mới.

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.