Sự khác biệt giữa người dùng cộng đồng và người dùng khác là gì?


61

Tôi tự hỏi: Tại sao có hai lệnh này trên Debian Linux, với tên và chức năng rất giống nhau? Điều này luôn luôn gây nhầm lẫn cho tôi.

  • Có ai trong số họ vượt trội hơn người khác?
  • Tại sao họ không hợp nhất thành một?
  • Có sự khác biệt đáng kể giữa chúng?
  • Tôi nên sử dụng cái nào? Hoặc nó phụ thuộc vào một trường hợp sử dụng?

1
Lưu ý rằng useraddcó sẵn trên tất cả các nền tảng giống như Unix; adduserchỉ dành cho Debian và các dẫn xuất của nó.
Franklin Yu

Câu trả lời:


68

useraddlà nhị phân nguyên gốc được biên dịch với hệ thống. Nhưng, adduserlà một tập lệnh perl sử dụng useraddnhị phân trong back-end.

adduserthân thiện với người dùng và tương tác hơn so với back-end của nó useradd. Không có sự khác biệt trong các tính năng được cung cấp.


1
adduser không khả dụng trên tất cả các distro (ví dụ: dựa trên suse) và trên một số khác, nó chỉ là một liên kết tượng trưng đến useradd (dựa trên redhat).
ychaouche

12

Ưu điểm chính của adduser so với useradd là giao dịch với người dùng ở cấp hệ thống. Với adduser , tài khoản người dùng ở cấp hệ thống khi được tạo sẽ đặt một thư mục người dùng ở nhà cho người dùng hệ thống nơi useradd không tự động. Nếu bạn đọc người đàn ông họ về cơ bản là giống nhau ngoại trừ người dùng ở cấp hệ thống và các thư mục nhà liên quan là tự động. adduser tự động tạo một thư mục / home / user cho người dùng ở cấp hệ thống, nơi không có điều khoản nào trong useradd , ngoại trừ nếu được chỉ định bởi tùy chọn -m . Các bài đọc khác mà tôi đã đi qua quát trạng thái đó UID và GUID được giao nhiệm vụ theo tiêu chuẩn được chấp nhận conformal Debian trong adduser.


1
adduser có tùy chọn --no-create-home.
ychaouche

1

Trong một vài trường hợp Redhat tôi đã kiểm tra (4.9 từ 2011 và 6,9 từ 2017), adduser chỉ đơn giản là một bí danh cho useradd, không phải là tập lệnh Perl. Đây là Redhat 6,9:

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

Cách tôi nhớ rằng useradd là chương trình 'chính xác' là thế này: thêm người dùng chỉ là một thao tác trong phổ CRUD. Bạn cũng cần các hoạt động 'sửa đổi' và 'xóa' ('đọc' có lẽ được bao phủ bằng cách xem / etc / passwd). Và do đó, các chương trình được đặt tên người dùng * (useradd, usermod và userdel tương ứng). Tôi cho rằng quy ước đặt tên người dùng * thay thế (adduser, moduser và deluser - những thứ này không tồn tại) cũng có thể hoạt động. Nhưng nó sẽ hơi khó xử hơn một chút (vì một lý do tôi không thể diễn đạt rõ ràng vào lúc này :)


không thể tìm thấy modusertrên Debian, nhưng deluserchắc chắn là có.
ychaouche

0

Trong raspian (tôi sẽ cần kiểm tra các HĐH khác), 'adduser USER' bắt đầu một hộp thoại (TUI) trong khi 'useradd USER' thì KHÔNG.

Rõ ràng, bằng cách sử dụng adduser, một khi hộp thoại xuất hiện, lệnh 'useradd' đầy đủ đã được thực thi. Ngay cả khi bạn CTRL-C, người dùng của bạn vẫn ở đó.

Như trong các hệ thống mới, họ tạo các nhóm "cá nhân", để xóa người dùng mới được tạo, bạn sẽ cần:

  • vi / etc / passwd
  • vi / etc / nhóm
  • rm -rf / nhà / NGƯỜI DÙNG

Tôi cho rằng vì adduser "sử dụng" useradd, phần còn lại là siêu dữ liệu về người dùng. Vì vậy, về mặt kỹ thuật không có thay đổi nào trong "skel", "mask mask" hoặc tương tự, tức là hệ thống của bạn mặc định.

Mặt khác, vì useradd không đưa ra bất kỳ TUI nào, nên nó có thể hữu ích hơn trong việc viết kịch bản.

Thành thật mà nói tôi đã thử nghiệm nó chỉ bằng tiếng rasbian, vì đó là lý do tôi bước vào câu hỏi.

Tôi có thể tưởng tượng rằng các hệ điều hành khác có thể thực hiện một phiên bản bổ sung khác.

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.