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


441

ความแตกต่างระหว่างคำสั่งadduserและuseraddบน Ubuntu คืออะไร?


17
คำถามเดียวกันเกี่ยวกับ Super UserและServer Fault
ændrük

5
และยังอยู่ในระบบปฏิบัติการยูนิกซ์ stackexchange (คำตอบรายละเอียดมาก)
xealits

และเป็นคำถามที่ถูกต้องและยังคงอยู่ ปัญหาไม่ใช่คนถามในบริบทที่เกี่ยวข้องมันเป็นคำถามที่ต้องถามเลย
foo

คำตอบ:


387

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

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

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


59
เพิ่มคำสั่ง useradd จะไม่สร้างไดเรกทอรี '/ home / ชื่อผู้ใช้' แต่คำสั่ง adduser จะ
ลึกมากขึ้น

65
useradd พร้อม-mตัวเลือกจะสร้างโฮมไดเร็กตอรี่
richsinn

10
การปลูกฝังไม่น่าสนใจความหมายคือ เช่นเดียวadduser(8)คือใช้งานง่ายมากขึ้นและสร้างและการตั้งค่าของผู้ใช้โดยเริ่มต้นในแบบที่คุณคาดหวัง และuseradd(8)ทำในสิ่งที่คุณถามเท่านั้นดังนั้นคุณต้องการสร้างโฮมไดเร็กตอรี่คุณต้องบอกให้สร้างมันให้คุณ
Anders

23
ฉันต้อง google นี้ทุกครั้ง ... ฉันจะช่วยตัวเองให้จำได้ว่าอันไหน
Quentin Skousen

11
@kkhugs สำหรับฉัน "adduser" รู้สึกใช้งานง่ายที่สุดเพราะมันเป็นคำสั่งที่ฟังดูเหมือนภาษาอังกฤษ หากคุณจำได้ว่าเป็น "ใช้งานง่ายที่สุด" ของทั้งสองคุณสามารถลองจำได้ว่าเป็นที่ต้องการ / ง่ายกว่า
pzkpfw

146

ใช้adduser (และdeluserเมื่อลบผู้ใช้) เสมอเมื่อคุณสร้างผู้ใช้ใหม่จากบรรทัดคำสั่ง (หากคุณกำลังเขียนสคริปต์โดยเฉพาะอย่างยิ่งถ้าคุณตั้งเป้าหมายในการพกพาคุณอาจต้องการใช้ยูทิลิตี้ระดับล่างแทน - และadduser/ deluserอาจไม่สามารถใช้ได้กับทุก distros เช่นใน SuSE)

useradd, userdelและusermodคำสั่งที่มีสาธารณูปโภค lowlevel ซึ่งจะมีเหตุผลทางประวัติศาสตร์ในขณะที่adduser/deluserทำสิ่งที่ถูกต้อง™ (ฉันจำได้ว่าจะใช้โดยการคิดที่user*มาadduser/deluserในตัวอักษรและดังนั้นจึงเป็น "แย่ลง")

ตาม manpages ที่เกี่ยวข้อง (บน Ubuntu 12.04 Pangolin ที่แม่นยำ, เช่นระบบอนุพันธ์ Debian)

Manpage สำหรับadduserพูดว่า:

(เพิ่มการเน้น)

adduserและเพิ่มผู้ใช้และกลุ่มที่จะระบบตามตัวเลือกบรรทัดคำสั่งและข้อมูลการกำหนดค่าในaddgroup ต้อนรับพวกเขาเป็นมิตรปิดให้บริการไปยังเครื่องมือระดับต่ำเช่น, และโปรแกรมโดยค่าเริ่มต้นเลือก Debian นโยบายที่สอดคล้องกับค่า UID และ GID สร้างไดเรกทอรีบ้านกับการกำหนดค่าโครงเหล็ก, การเรียกใช้สคริปต์ที่กำหนดเองและคุณลักษณะอื่น ๆ และสามารถเรียกใช้ในหนึ่งในห้าโหมด:/etc/adduser.confuseraddgroupaddusermodadduseraddgroup

Manpage สำหรับuseraddพูดว่า:

useraddเป็นยูทิลิตี้ระดับต่ำสำหรับการเพิ่มผู้ใช้ บน Debian ผู้ดูแลระบบควรใช้adduser(8)แทน

ดูเพิ่มเติมที่: “ adduser” และ“ useradd” ต่างกันอย่างไร (บน SuperUser)


6
ฉันไม่สามารถจำได้ว่าอันไหนดังนั้นนี่จึงเป็นความทรงจำที่โง่ของฉันถ้ามันช่วยทุกคน :) "ผู้ใช้" คล้องจองกับ "ผู้แพ้" และ "ผู้แพ้" จะมาครั้งสุดท้าย ดังนั้น: adduser, deluser
Mads Skjern

26
ที่จริงผมไม่เห็นด้วยที่ " ผู้ใช้เสมอadduser ": สำหรับสคริปต์อัตโนมัติฉันชอบuseraddเพราะมันมักจะมีไม่โต้ตอบและไม่ distro เฉพาะ
Wernight

2
ฉันลองใช้adduseropenSUSE และไม่มีอยู่ (13.2)
cst1992

1
@ cst1992 คุณพูดถูกฉันได้แก้ไขคำตอบเพื่อสะท้อนสิ่งนี้แล้ว พออยากรู้อยากเห็นเมื่อฉันพยายามlocate adduserในระบบ SuSE 11 ที่ทำงานฉันพบว่ามีaddusermanpage แต่ไม่มีไบนารี (และไม่ใช่delusermanpage หรือคำสั่ง)
zrajm

2
On Red Hat/usr/sbin/adduser -> useradd
Levon

17

adduser: เพิ่มผู้ใช้ที่มีโปรไฟล์และข้อมูลครบถ้วน (ผ่านโควต้าการอนุญาตเป็นต้น)

useradd: เพิ่มผู้ใช้ที่มีชื่อของเขาเท่านั้น (หากคุณต้องการเพิ่มผู้ใช้ชั่วคราวที่มีเพียงชื่อเท่านั้นไม่ต้องการข้อมูลอื่น ๆ )


1
+1 และยินดีต้อนรับ! ฉันขึ้นคะแนนคนที่ไม่สามารถอธิบายการลงคะแนนเสียงครั้งก่อนของพวกเขาได้ ตามทัน! โปรแกรมเมอร์ที่ดีมักจะขึ้นไปอยู่ด้านบน - (และไม่ลงคะแนนโดยไม่มีคำอธิบาย) :)
Ricalsin

11

ความแตกต่างอีกสองข้อที่นำไปสู่สถานการณ์เฉพาะที่ผู้ใช้อาจต้องการ

  1. ใน distros ที่ใหม่กว่ารวมถึง Ubuntu 14.4 ผู้ใช้จะแจ้งให้ทราบข้อมูลเช่นรหัสผ่านและ "gecos" (ข้อมูลสำหรับคำสั่ง finger) ซึ่งหมายความว่าจะไม่เหมาะสำหรับการโทรจากสคริปต์ (เครดิต: ถูกกล่าวถึงในความคิดเห็นโดย Wernight)

    พรอมต์สามารถถูกระงับโดยผ่านอาร์กิวเมนต์เป็นโมฆะ:

    adduser --disabled-password --gecos "" USER
    
  2. useraddช่วยให้คุณสามารถส่งกลุ่มเพิ่มเติมหลายกลุ่มเพื่อเพิ่มผู้ใช้โดยใช้-Gตัวเลือก adduserดูเหมือนว่าคุณจะต้องเรียกคำสั่งหนึ่งครั้งเพื่อให้แต่ละกลุ่มเพิ่ม


ไม่ทำงานบน Ubuntu 16.04
answerSeeker

8

adduserเป็นมิตรในการตั้งค่าโฟลเดอร์บ้านของบัญชีและการตั้งค่าอื่น ๆ (เช่นการโหลดสถิติของระบบและการแจ้งเตือนโดยอัตโนมัติเมื่อเข้าสู่ระบบ) ในขณะที่useraddเพียงแค่สร้างผู้ใช้


2
ไม่ถูกต้อง. useradd สามารถสร้างโฮมไดเร็กตอรี่ด้วย -m, ตั้งรหัสผ่านด้วย -p, สร้างไฟล์ Skeleton ด้วย -k, และเพิ่มผู้ใช้ไปยังกลุ่มด้วย -G
ychaouche

5

ความแตกต่างพื้นฐานคือ "adduser" จะสร้างโฮมไดเร็กตอรี่ & เพิ่มไฟล์ Skeleton ไปยังไดเร็กตอรี่ที่ "useradd" จะไม่สร้างโฮมไดเร็กตอรี่และไฟล์ Skeleton!

ผู้ลองใช้:

Adding user `try' ...
Adding new group `try' (1001) ...
Adding new user `try' (1001) with group `try' ...
Creating home directory `/home/try' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for try
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

ผู้ใช้เพิ่ม try1:

# ll /home/
total 20
drwxr-xr-x  5 root    root    4096 Oct 26 15:52 ./
drwxr-xr-x 22 root    root    4096 Oct 26 15:47 ../
drwx------  8 ashishk ashishk 4096 Oct 26 15:50 ashishk/
drwxr-xr-x  3 root    root    4096 Oct 14 13:02 .ecryptfs/
drwxr-xr-x  2 try     try     4096 Oct 26 15:52 try/
root@chef-workstation:/home/ashishk#


0

ฉันจะชี้ให้เห็นadduserว่าไม่ได้มี-Mตัวเลือกเสมอไปและไม่เคารพ--systemธงที่ระบุว่า :

โปรดทราบว่า useradd จะไม่สร้างโฮมไดเรกทอรีสำหรับผู้ใช้ดังกล่าวโดยไม่คำนึงถึงการตั้งค่าเริ่มต้นใน /etc/login.defs (CREATE_HOME) คุณต้องระบุตัวเลือก -m หากคุณต้องการให้โฮมไดเรกทอรีสำหรับบัญชีระบบที่จะสร้าง

ถ้าคุณกำลังพยายามที่จะสร้างผู้ใช้ระบบได้โดยไม่ต้องuseradd --system -Mไดเรกทอรีบ้านแล้วใช้

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