คำสั่งเพื่อแสดงรายการผู้ใช้ทั้งหมดหรือไม่ และวิธีเพิ่มลบแก้ไขผู้ใช้


855

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

ที่สามารถช่วยในการจัดการบัญชีของคุณได้อย่างง่ายดายโดยเทอร์มินัล


3
sed คำตอบsed 's/:.*//' /etc/passwd
Avinash Raj

2
ผู้ใช้รายการ:awk -F: '{ print $1 }' /etc/passwd
saviour123

คำตอบ:


1142

เพื่อแสดงรายการ

ในการแสดงรายชื่อผู้ใช้ในพื้นที่คุณสามารถใช้:

cut -d: -f1 /etc/passwd

ในการแสดงรายการผู้ใช้ทุกคนที่สามารถตรวจสอบความถูกต้อง (ในบางวิธี) รวมถึงที่ไม่ใช่ในท้องถิ่นให้ดูคำตอบนี้

คำสั่งการจัดการผู้ใช้ที่มีประโยชน์บางคำสั่ง (จำกัด เฉพาะผู้ใช้ท้องถิ่น ):

เพื่อเพิ่ม

ในการเพิ่มผู้ใช้ใหม่คุณสามารถใช้:

sudo adduser new_username

หรือ:

sudo useradd new_username

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

เพื่อลบ / ลบ

หากต้องการลบ / ลบผู้ใช้อันดับแรกคุณสามารถใช้:

sudo userdel username

จากนั้นคุณอาจต้องการลบไดเรกทอรีบ้านสำหรับบัญชีผู้ใช้ที่ถูกลบ:

sudo rm -r / home / ชื่อผู้ใช้

กรุณาใช้ด้วยความระมัดระวังคำสั่งดังกล่าว!

ในการปรับเปลี่ยน

ในการแก้ไขชื่อผู้ใช้ของผู้ใช้:

usermod -l new_username old_username

ในการเปลี่ยนรหัสผ่านสำหรับผู้ใช้:

sudo passwd username

ในการเปลี่ยนเชลล์สำหรับผู้ใช้:

sudo chsh username

วิธีเปลี่ยนรายละเอียดสำหรับผู้ใช้ (ตัวอย่างเช่นชื่อจริง):

sudo chfn username

วิธีเพิ่มผู้ใช้ในsudoกลุ่ม:

adduser username sudo

หรือ

usermod -aG sudo username

และแน่นอนดูเพิ่มเติมที่: man adduser, man useradd, man userdel... และอื่น ๆ


12
Radu ลืมที่จะพูดถึงsudo chfn <username>ว่าการเปลี่ยนแปลงรายละเอียดของผู้ใช้ (ตัวอย่างเช่นชื่อจริง) ฉันพยายามที่จะเพิ่มสิ่งนี้เป็นความคิดเห็น แต่ฉันได้รับข้อผิดพลาดที่บอกฉันว่าฉันต้องมีชื่อเสียงถึง 50 คน
Mikaela

2
ฉันคิดว่าควรขีดเส้นใต้ไว้ว่าคำตอบที่ถูกต้องสำหรับคำถามที่เชื่อมโยงนั้นคือaskubuntu.com/a/381646/16395 --- ไม่เช่นนั้นคุณต้องคำนึงถึงนโยบาย GID / UID Ubuntu ด้วยมือ คำตอบที่ยอมรับไม่ชัดเจนนัก
Rmano

sudo userdel DOMAIN \\ johndoe ทำให้ฉันมีข้อผิดพลาด: "userdel: ไม่สามารถลบรายการ 'DOMAIN \ johndoe' จาก / etc / passwd - ฉันดู / etc / passwd และพวกเขาไม่ได้อยู่ในนั้นอาจเป็นเพราะ" โดเมน "บัญชี?
00fruX

1
@ 00fruX ใช่ ... ถ้าคุณใช้ฐานข้อมูลผู้ใช้ส่วนกลางคุณจะต้องจัดการกับมันโดยตรง
Oli


87

เพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง:

cat /etc/passwd

หรือ

less /etc/passwd
more /etc/passwd

คุณยังสามารถใช้ awk: awk

awk -F':' '{ print $1}' /etc/passwd

วิธีเพิ่มผู้ใช้ด้วยคำสั่ง?
nux

คุณสามารถใช้คำสั่งuseradd
มิทช์

@nux ปาร์ตี้ช้าไปหน่อย แต่จากการใช้บรรทัดคำสั่งadduserแทนuseraddควร จำกัด ให้สคริปต์ที่ผู้เขียนรู้จริง ๆ ว่าเขากำลังทำอะไรอยู่
flindeberg

64

วิธีที่ง่ายที่สุดที่จะได้รับข้อมูลประเภทนี้คือgetent- ดูmanpage สำหรับgetentไอคอน Manpageคำสั่ง ในขณะที่คำสั่งนั้นให้ผลลัพธ์เดียวกันกับที่cat /etc/passwdเป็นประโยชน์ในการจำเพราะมันจะให้รายชื่อขององค์ประกอบหลายอย่างในระบบปฏิบัติการ

ในการรับรายชื่อผู้ใช้ทั้งหมดที่คุณพิมพ์ (ตามที่ผู้ใช้อยู่ในรายการ/etc/passwd)

getent passwd

เพิ่มผู้ใช้newuserกับระบบคุณจะพิมพ์

sudo adduser newuser

เพื่อสร้างผู้ใช้ที่ใช้การตั้งค่าเริ่มต้นทั้งหมด

โบนัส: เพื่อเพิ่มผู้ใช้ใด ๆ (เช่นanyuser ) ให้กับกลุ่ม (เช่นcdrom ) ประเภท

sudo adduser anyuser cdrom

คุณลบผู้ใช้ (เช่นล้าสมัย ) ด้วย

sudo deluser obsolete

หากคุณต้องการที่จะลบไดเรกทอรีบ้าน / อีเมลของเขาเช่นกันคุณพิมพ์

sudo deluser --remove-home obsolete

และ

sudo deluser --remove-all-files obsolete

จะลบผู้ใช้และไฟล์ทั้งหมดที่ผู้ใช้รายนี้เป็นเจ้าของในทั้งระบบ


8
มันมีประโยชน์ที่ต้องจำไว้ว่า getent ไม่เพียงพิมพ์ผลลัพธ์ของผู้ใช้ใน / etc / passwd แต่ผู้ใช้ทั้งหมดใน backend userdb ที่กำหนดค่าไว้ทั้งหมดในระบบที่กำหนดไม่ว่าจะเป็น / etc / passwd หรือ LDAP ฯลฯ
Marcin Kaminski

@MarcinKaminski ถูกต้องมันยังพิมพ์การตั้งค่าผู้ใช้ในระบบ SSO ที่สามารถเข้าถึงเซิร์ฟเวอร์ คำตอบนี้เป็นคำตอบที่ดีที่สุดโดยgetent passwdเป็นคำสั่งที่ถูกต้อง
ulkas

@MarcinKaminski จากทั่วทุกนับแบ็กเอนด์ฐานข้อมูลผู้ใช้
jrw32982


27

สิ่งนี้ควรได้รับภายใต้สถานการณ์ปกติส่วนใหญ่ผู้ใช้ปกติ (ที่ไม่ใช่ระบบไม่ใช่คนแปลก ฯลฯ ):

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

สิ่งนี้ทำงานโดย:

  • อ่านจาก /etc/passwd
  • ใช้:เป็นตัวคั่น
  • หากฟิลด์ที่สาม (หมายเลข ID ผู้ใช้) มีขนาดใหญ่กว่า 1,000 และไม่ใช่ 65534 ระบบจะพิมพ์ฟิลด์แรก (ชื่อผู้ใช้ของผู้ใช้)

นี่เป็นเพราะในหลายระบบลินุกซ์ชื่อผู้ใช้ที่มากกว่า 1,000 จะถูกสงวนไว้สำหรับผู้ใช้ที่ไม่มีสิทธิ์ ข้อมูลบางส่วนเกี่ยวกับเรื่องนี้ที่นี่ :

ID ผู้ใช้ (UID) เป็นจำนวนเต็มบวกเฉพาะที่กำหนดโดยระบบปฏิบัติการแบบ Unix ให้กับผู้ใช้แต่ละคน ผู้ใช้แต่ละคนจะถูกระบุไปยังระบบโดย UID ของมันและโดยทั่วไปชื่อผู้ใช้จะใช้เป็นอินเตอร์เฟสสำหรับมนุษย์เท่านั้น

UID จะถูกเก็บไว้พร้อมกับชื่อผู้ใช้ที่เกี่ยวข้องและข้อมูลเฉพาะของผู้ใช้อื่น ๆ ในไฟล์ / etc / passwd ...

ฟิลด์ที่สามประกอบด้วย UID และฟิลด์ที่สี่มี ID กลุ่ม (GID) ซึ่งโดยค่าเริ่มต้นจะเท่ากับ UID สำหรับผู้ใช้สามัญทั้งหมด

ในเคอร์เนล Linux 2.4 ขึ้นไป UID นั้นเป็นจำนวนเต็ม 32 บิตที่ไม่ได้ลงนามซึ่งสามารถแสดงค่าจากศูนย์ถึง 4,294,967,296 อย่างไรก็ตามขอแนะนำให้ใช้ค่าสูงสุด 65,534 เท่านั้นเพื่อรักษาความเข้ากันได้กับระบบที่ใช้เคอร์เนลหรือระบบไฟล์เก่าที่สามารถรองรับ UID แบบ 16 บิตได้เท่านั้น

UID เป็น 0 มีบทบาทพิเศษ: เป็นบัญชีรูทเสมอ (เช่นผู้ใช้การดูแลระบบมีอำนาจทุกอย่าง) แม้ว่าชื่อผู้ใช้สามารถเปลี่ยนแปลงได้ในบัญชีนี้และสามารถสร้างบัญชีเพิ่มเติมด้วย UID เดียวกันได้ แต่ไม่ควรดำเนินการใด ๆ กับมุมมองความปลอดภัย

UID 65534 นั้นสงวนไว้สำหรับไม่มีใครเป็นผู้ใช้ที่ไม่มีสิทธิ์ระบบซึ่งต่างจากผู้ใช้ทั่วไป (เช่นไม่มีสิทธิ์) UID นี้มักใช้สำหรับบุคคลที่เข้าถึงระบบจากระยะไกลผ่าน FTP (โปรโตคอลการถ่ายโอนไฟล์) หรือ HTTP (โปรโตคอลการถ่ายโอนไฮเปอร์เท็กซ์)

UIDs 1 ถึง 99 ถูกสงวนไว้สำหรับผู้ใช้ระบบแบบพิเศษ (บางครั้งเรียกว่าผู้ใช้แบบหลอก) เช่น wheel, daemon, lp, โอเปอเรเตอร์, ข่าวสาร, อีเมล ฯลฯ ผู้ใช้เหล่านี้เป็นผู้ดูแลระบบที่ไม่ต้องการพลังรากทั้งหมด ภารกิจการดูแลระบบบางอย่างและต้องการสิทธิ์พิเศษมากกว่างานที่มอบให้แก่ผู้ใช้ทั่วไป

Linux ดิสทริบิวชันบางตัว (เช่นเวอร์ชัน) เริ่มต้น UID สำหรับผู้ใช้ที่ไม่มีสิทธิพิเศษที่ 100 คนอื่น ๆ เช่น Red Hat เริ่มต้นที่ 500 และอื่น ๆ เช่น Debian เริ่มที่ 1000 เนื่องจากความแตกต่างระหว่างการแจกแจงด้วยตนเอง การแทรกแซงอาจมีความจำเป็นหากมีการใช้การกระจายหลายอย่างในเครือข่ายในองค์กร

นอกจากนี้ยังสามารถสำรองบล็อก UID สำหรับผู้ใช้ภายในเช่น 1,000 ถึง 9999 และบล็อกอื่นสำหรับผู้ใช้ระยะไกล (เช่นผู้ใช้ที่อื่นในเครือข่าย) เช่น 10,000 ถึง 65534 สิ่งสำคัญคือการตัดสินใจ ในโครงการและเป็นไปตามนั้น

ข้อดีของการฝึกการสำรองบล็อกตัวเลขสำหรับผู้ใช้บางประเภทคือการทำให้สะดวกในการค้นหาผ่านบันทึกของระบบสำหรับกิจกรรมของผู้ใช้ที่น่าสงสัย

ตรงกันข้ามกับความเชื่อที่ได้รับความนิยมไม่จำเป็นที่แต่ละรายการในฟิลด์ UID จะไม่ซ้ำกัน อย่างไรก็ตาม UID ที่ไม่ซ้ำกันสามารถก่อให้เกิดปัญหาด้านความปลอดภัยและทำให้ UID นั้นควรจะมีลักษณะเฉพาะตัวทั่วทั้งองค์กร ควรหลีกเลี่ยงการรีไซเคิล UID จากผู้ใช้เก่าให้นานที่สุดเท่าที่จะทำได้


1
เกือบเป็นคำตอบที่สมบูรณ์แบบ แต่ IMO มันใช้งานได้ง่ายกว่าgetentแทนที่จะอ่านโดยตรงจาก/etc/passwdและค้นหาUID_MIN/ UID_MAXแทนค่าที่เข้ารหัสยาก:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa

17

รายการผู้ใช้ทั้งหมดที่สามารถเข้าสู่ระบบ (ไม่มีผู้ใช้ระบบที่ชอบ: bin, deamon, mail, sys, ฯลฯ )

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

เพิ่มผู้ใช้ใหม่

sudo adduser new_username

หรือ

sudo useradd new_username

ลบ / ลบชื่อผู้ใช้

sudo userdel username

ถ้าคุณต้องการที่จะลบไดเรกทอรีบ้าน (เริ่มต้นไดเรกทอรี / home / ชื่อผู้ใช้)

sudo deluser --remove-home username

หรือ

sudo rm -r /path/to/user_home_dir

หากคุณต้องการลบไฟล์ทั้งหมดออกจากระบบจากผู้ใช้รายนี้ (ไม่เพียง แต่เป็นไดเร็คทอรี่บ้านเท่านั้น)

sudo deluser --remove-all-files

1
บางทีคุณอาจจะอธิบายความแตกต่างระหว่างและadduser useraddนอกจากนี้ยังเพิ่มsudo-prefix ไปยังคำสั่งแรก ไฟล์ shadow password สามารถอ่านได้ในฐานะ root เท่านั้น
s3lph

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowแสดงให้ฉันเห็นผู้ใช้ทั้งหมดรวมถึง bin, daemon, และแสดงคำเตือนนี้: escape sequence \$' treated as plain $ 'ฉันพบโพสต์นี้stackoverflow.com/a/25867768/847954 และเพิ่มแบ็กสแลชอีกหนึ่งอันและทำงานได้ดี:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk

8

ตกลงนี่คือเคล็ดลับที่จะช่วยคุณเรียงลำดับ เทอร์มินัลมีการทำให้สมบูรณ์อัตโนมัติหากคุณพิมพ์ผู้ใช้และกดปุ่ม Tab สองครั้งมันจะแสดงรายการคำสั่งทั้งหมดที่มีอยู่กับผู้ใช้เป็น 4 ตัวอักษรแรก

user (tab tab)

ให้ฉันเป็นตัวเลือกที่เป็นไปได้ useradd userdel ผู้ใช้ usodod ผู้ใช้ผู้ดูแลระบบ
ถ้าคุณต้องการทราบเพิ่มเติมเกี่ยวกับคำสั่ง google มันหรือพิมพ์ man manaddadd useradd ให้ผู้ใช้ - สร้างผู้ใช้ใหม่หรืออัปเดตข้อมูลผู้ใช้ใหม่เริ่มต้น ... ...

เพื่อแสดงรายการผู้ใช้คุณควรไปกับสิ่งที่ Mitch พูด

หวังว่าจะช่วยให้ฉันรักความสมบูรณ์ของแท็บในการทุบตีช่วยให้ฉันจำสิ่งต่าง ๆ ไม่ได้


6

หากต้องการค้นหาผู้ใช้ที่มีโฮมไดเร็กทอรีใน / home-folder บนเครื่องให้รันคำสั่งต่อไปนี้

cd /home
ls 

จากนั้นคุณสามารถดูผู้ใช้ที่มีสิทธิ์ในการเข้าสู่เซิร์ฟเวอร์ หากเราต้องการค้นหาไฟล์ของผู้ใช้ใด ๆ คุณต้องเป็นผู้ใช้รูท


8
/homeนี้จะแสดงเฉพาะเนื้อหาของ แม้ว่าอูบุนตูจะวางไดเรกทอรีผู้ใช้ไว้ที่นั่นเป็นค่าเริ่มต้น
David Foerster

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