จะเพิ่มผู้ใช้ที่มีอยู่ในกลุ่มที่มีอยู่ได้อย่างไร


669

ฉันต้องการเพิ่มผู้ใช้ Apache ( www-data) ลงในaudioกลุ่ม ฉันอ่าน man page สำหรับuseraddแล้ว แต่ฉันไม่มีโชค ฉันใช้ xubuntu 11.10 อยู่ นี่คือสิ่งที่ฉันทำ:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

ถ้าฉันออกจาก-Gตัวเลือกทุบตีพิมพ์ข้อมูลช่วยเหลือสำหรับuseradd:

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

ยังไม่ชัดเจนสำหรับฉันจาก man page ตัวเลือกที่ฉันควรใช้ในการทำงานนี้

คำตอบ:


1040

useraddคำสั่งจะพยายามที่จะเพิ่มผู้ใช้ใหม่ เนื่องจากผู้ใช้ของคุณมีอยู่แล้วนี่ไม่ใช่สิ่งที่คุณต้องการ

แต่หากต้องการแก้ไขผู้ใช้ที่มีอยู่เช่นเพิ่มผู้ใช้นั้นในกลุ่มใหม่ให้ใช้usermodคำสั่ง

ลองสิ่งนี้:

sudo usermod -a -G groupName userName

ผู้ใช้จะต้องออกจากระบบและลงชื่อเข้าใช้ใหม่เพื่อดูกลุ่มใหม่ที่เพิ่มเข้ามา

  • -a(ผนวก) สวิทช์เป็นสิ่งจำเป็น มิฉะนั้นผู้ใช้จะถูกลบออกจากกลุ่มใด ๆ ที่ไม่ได้อยู่ในรายการ

  • -Gสวิทช์ยิง (คั่นด้วยเครื่องหมายจุลภาค) รายชื่อของกลุ่มเพิ่มเติมที่จะกำหนดให้ผู้ใช้


71
sudo usermod -a -G [group-name] [user-name]: เพียงแค่กุ๊กกิ๊กสำหรับผู้ที่เพียงเหลือบคำตอบหลังจากที่ได้อ่านพาดหัว
Programster

36
sudo adduser user groupผมคิดว่าวิธีที่ต้องการในขณะนี้คือ มันเป็นไวยากรณ์ที่ง่ายและสะอาดขึ้น ดูการตอบสนองจาก @Bai
ctbrown

3
@wilhil:: man usermod" -a, --append - เพิ่มผู้ใช้ไปยังกลุ่มเสริมใช้เฉพาะกับตัวเลือก-G . -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [... ]หากผู้ใช้ปัจจุบันเป็นสมาชิกของกลุ่มที่ไม่อยู่ในรายชื่อผู้ใช้จะถูกลบออกจากกลุ่มพฤติกรรมนี้สามารถเปลี่ยนแปลงได้ผ่านตัวเลือก -a ซึ่งจะผนวกผู้ใช้เข้ากับรายการเสริมปัจจุบัน รายชื่อกลุ่ม "
Adam Michalik

18
มีวิธีที่จะได้รอบส่วน "ออกจากระบบและกลับมา"? คำสั่ง update-groups บางประเภทอาจจะ?
con-f-use

14
@ con-f-use หากคุณสามารถเรียกใช้sudo login -f YOURUSERNAMEมันจะเริ่มเซสชันเชลล์ใหม่ ใช้idคำสั่งเพื่อตรวจสอบว่าเซสชั่นใหม่อยู่ในชุดของกลุ่มที่ถูกต้อง อย่างไรก็ตามนี่ไม่ใช่ "ทั่วโลก" - ใช้ไม่ได้กับเทอร์มินัลที่เปิดอยู่แล้ว ดังนั้นการออกจากระบบเป็นตัวเลือกที่ดีที่สุดถ้าเป็นไปได้
Aaron McDaid

222

การเพิ่มผู้ใช้ในกลุ่ม:

sudo adduser user group

การลบผู้ใช้ออกจากกลุ่ม:

sudo deluser user group

3
ไม่ตรงกับคำถามที่ถูกถาม
Tejendra

11
@ ความคิดเห็นของ Tejendra ดูเหมือนว่าจะถือว่าการใช้ useradd เป็นสิ่งที่ต้องการ / จำเป็นในการตอบคำถามของ OP; บางทีคำตอบนี้อาจเป็นเพียงคำที่หายไปเพื่อระบุว่าผู้ใช้ / ผู้ใช้เป็นทางเลือกที่ดีกว่า
ปราชญ์

12
สำหรับฉันอินเตอร์เฟสที่เรียบง่ายกว่าดีกว่านั่นคือเหตุผลที่ฉันชอบสิ่งนี้
Betlista

4
นี้จะตรงกับคำถามที่ถูกถาม @ Knocte ใช่ฉันคิดว่ามันเป็นเฉพาะเดเบียน
Auspex

3
@Auspex ฉันสามารถยืนยันได้ว่ามันไม่ทำงานบน Red Hat
Stibu

54

หลังจากเพิ่มผู้ใช้ที่มีอยู่:

usermod -a -G group user  

คุณอาจต้องออกจากระบบและเข้าสู่ระบบ/etc/groupที่จะได้รับสิทธิ์จากกลุ่ม


21
กรุณาทำให้มันเป็นส่วนหนึ่ง "ต้องออกจากระบบและเข้าสู่ระบบ" ตัวหนา
Jin Kwon

FYI: ฉันคิดว่าidคำสั่งควรระบุว่าคุณถูกเพิ่มในกลุ่มโดยไม่จำเป็นต้องออก id myuser
ficuscr

5
การออกจากระบบและกลับเข้ามานั้นเป็นสิ่งจำเป็นสำหรับฉันใน Ubuntu 14.10
A.Danischewski

26

ปกติฉันจะใช้

sudo gpasswd -a myuser mygroup

3
usermod ไม่สามารถใช้ได้บนระบบของฉัน Ubuntu 14.04 มันใช้งานได้ดีมาก!
Drew

สิ่งนี้ใช้ได้ดีกับ Debian Stretch เช่นกันซึ่งusermodไม่ได้ติดตั้ง
Josh Habdas

8

ฉันโพสต์สิ่งนี้เป็นคำตอบเพราะฉันไม่มีชื่อเสียงพอที่จะแสดงความคิดเห็น ดังที่ @ dpendolino พูดถึงสำหรับผลกระทบของคำสั่งนี้เพื่อคงอยู่:

sudo usermod -a -G groupName userName

... คุณต้องออกจากระบบ / ลงชื่อเข้าใช้อีกครั้ง

อย่างไรก็ตามหากคุณต้องการช็อตคัตเพื่อเริ่มใช้ความเป็นสมาชิกกลุ่มใหม่ของคุณทันที (และคุณมีสิทธิ์sudo ที่ถูกต้อง) ฉันพบวิธีแก้ไขปัญหานี้แล้ว:

$ sudo su -
# su [userName]
$ groups

คำอธิบาย:

  • sudo su - จะให้รูตเชลล์แก่คุณ
  • su [userName] นำคุณกลับไปที่เชลล์กับผู้ใช้ของคุณ
  • groupsเมื่อรันตอนนี้จะแสดงกลุ่มที่คุณเพิ่มด้วยusermod -aGคำสั่ง

ในกรณีของฉันฉันพยายามเพิ่มกลุ่ม 'นักเทียบท่า' ให้กับผู้ใช้ของฉัน

ก่อน:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

หลังจาก:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker

5

บน Ubuntu ตั้งแต่เข้าสู่ระบบในขณะที่rootไม่ได้เปิดใช้งานผู้ใช้ในsudoกลุ่มสามารถยกระดับสิทธิ์สำหรับคำสั่งที่ จำกัด คำสั่งที่ จำกัด ใด ๆ จะต้องมีการเสริมด้วยsudoเพื่อยกระดับสิทธิ์

sudo usermod -a -G group user

จะเพิ่มผู้ใช้ที่มีอยู่ให้กับกลุ่มเสริมชื่อuser groupกลุ่มหลักของผู้ใช้จะยังคงไม่เปลี่ยนแปลง


1
sudo usermod -a -G groupName userName

จะทำงานได้ดี แต่ฉันต้องรีบูตทั้งหมดเพียงออกจากระบบและเข้าสู่ระบบอีกครั้งไม่ได้ทำงาน ...

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