อะไรคือความแตกต่างระหว่าง "ผู้เพิ่ม" และ "ผู้ใช้เพิ่ม"?


61

ฉันสงสัยว่า: ทำไมจึงมีคำสั่งสองคำนี้บน Debian Linux ที่มีชื่อและการทำงานคล้ายกันมาก สิ่งนี้ทำให้ฉันสับสนอยู่เสมอ

  • มีใครเหนือกว่าคนอื่นหรือไม่
  • ทำไมพวกเขาถึงไม่รวมเข้าเป็นหนึ่งเดียว?
  • มีความแตกต่างอย่างมีนัยสำคัญระหว่างพวกเขา?
  • ฉันควรใช้อันไหนดี หรือมันขึ้นอยู่กับกรณีการใช้งาน?

1
โปรดทราบว่าuseraddพร้อมใช้งานบนแพลตฟอร์มเหมือน Unix ทั้งหมด adduserสำหรับ Debian และตราสารอนุพันธ์เท่านั้น
Franklin Yu

คำตอบ:


68

useraddเป็นไบนารีดั้งเดิมที่คอมไพล์ด้วยระบบ แต่adduserเป็นสคริปต์ Perl ซึ่งใช้useraddไบนารีใน back-end

adduserเป็นมิตรต่อผู้ใช้และการโต้ตอบกว่า useraddback-end ไม่มีความแตกต่างในคุณสมบัติที่มีให้


1
adduser ไม่สามารถใช้งานได้ใน distros ทั้งหมด (เช่น suse-based) และสำหรับบางคนมันเป็นเพียง symlink สำหรับ useradd (ตาม redhat)
ychaouche

11

ประโยชน์หลักเพื่อadduserกว่าuseraddคือการจัดการกับผู้ใช้ระดับระบบ ด้วยadduserบัญชีผู้ใช้ระดับระบบเมื่อสร้างทำให้ไดเรกทอรีผู้ใช้ในบ้านสำหรับผู้ใช้ระบบที่useraddไม่ได้โดยอัตโนมัติ หากคุณอ่านคนพวกเขาจะเหมือนกันยกเว้นผู้ใช้ระดับระบบและไดเรกทอรีบ้านที่เกี่ยวข้องเป็นไปโดยอัตโนมัติ adduserสร้างไดเร็กทอรี / home / user โดยอัตโนมัติสำหรับผู้ใช้ระดับระบบโดยที่ไม่มีข้อกำหนดในuseraddยกเว้นถ้าระบุโดยตัวเลือก-m การอ่านอื่น ๆ ที่ฉันพบเจอโดยทั่วไประบุว่า UID และ GUID ถูกกำหนดโดยมาตรฐาน Debian ที่ได้รับการยอมรับในadduser.


1
adduser มีตัวเลือก --no-create-home
ychaouche

1

ในสองสามกรณี Redhat ที่ฉันตรวจสอบ (4.9 จาก 2011 และ 6.9 จาก 2017), adduser เป็นเพียงนามแฝงของ useradd ไม่ใช่สคริปต์ Perl นี่คือ 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

วิธีที่ฉันจำได้ว่า useradd คือโปรแกรม 'ถูกต้อง' คือ: การเพิ่มผู้ใช้เป็นเพียงการดำเนินการเดียวในสเปกตรัม CRUD คุณต้องมีการ 'แก้ไข' และ 'ลบ' การดำเนินการ ('อ่าน' จะครอบคลุมโดยการดู / etc / passwd) ดังนั้นโปรแกรมนี้มีชื่อว่าuser * (useradd, usermod และ userdel ตามลำดับ) ฉันคิดว่าอนุสัญญาการตั้งชื่อผู้ใช้ *ทางเลือก(adduser, moduser และ deluser - สิ่งเหล่านี้ไม่มีอยู่) ก็สามารถใช้ได้เช่นกัน แต่มันจะน่าอึดอัดใจกว่าเล็กน้อย (ด้วยเหตุผลที่ฉันไม่สามารถแสดงออกได้อย่างชัดเจนในขณะนี้ :)


ไม่สามารถหาได้moduserใน Debian แต่deluserมีแน่นอน
ychaouche

0

ภายใน raspian (ฉันจะต้องตรวจสอบ OS อื่น ๆ ) 'ผู้ใช้ USER' จะเริ่มต้นกล่องโต้ตอบ (TUI) ในขณะที่ 'useradd USER' ไม่

เห็นได้ชัดว่าการใช้ adduser เมื่อไดอะล็อกปรากฏขึ้นคำสั่ง 'useradd' แบบเต็มจะถูกใช้งานแล้ว แม้ว่าคุณจะ CTRL-C ผู้ใช้ของคุณอยู่ที่นั่น

ในระบบใหม่ที่พวกเขาสร้างกลุ่ม "ส่วนตัว" เพื่อลบผู้ใช้ที่สร้างขึ้นใหม่คุณจะต้อง:

  • vi / etc / passwd
  • vi / etc / group
  • rm -rf / home / USER

ฉันคิดว่าเนื่องจาก adduser "ใช้" useradd ส่วนที่เหลือเป็นข้อมูลเมตาเกี่ยวกับผู้ใช้ ในทางเทคนิคแล้วไม่มีการเปลี่ยนแปลงใน "skel", "มาสก์ไฟล์" หรือสิ่งที่คล้ายกันเช่นค่าเริ่มต้นของระบบของคุณ

อีกด้านหนึ่งเนื่องจาก useradd ไม่ได้นำ TUI ใด ๆ มาใช้จึงอาจมีประโยชน์มากกว่าในการเขียนสคริปต์

ความจริงแล้วฉันทดสอบมันเป็นภาษาราสเบียนเท่านั้นเพราะนั่นคือเหตุผลที่ฉันก้าวข้ามคำถาม

ฉันนึกภาพออกว่าระบบปฏิบัติการอื่นอาจใช้โปรแกรมเพิ่มรุ่นอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.