จะมีคู่ของ UID และ GID เดียวกันหรือไม่


11

ฉันต้องเปลี่ยนความเป็นเจ้าของไฟล์ / ไดเรกทอรีโดยใช้chmodฉันรู้เพียงชื่อผู้ใช้ของเจ้าของ แต่ต้องการเปลี่ยนชื่อกลุ่มเริ่มต้น simultaneosly ในตอนนี้ชื่อกลุ่มยังไม่ได้ตัดสินใจดังนั้นฉันจึงใส่ชื่อผู้ใช้

chown -R username:username path_to_dir

คำสั่งอาจทำงานสำหรับ sytems / ผู้ใช้หลายคนดังนั้นความกังวลของฉันคือ linux จะมีชื่อผู้ใช้คู่ (ผู้ใช้): ชื่อผู้ใช้ (กลุ่ม) หรือ ณ จุดหนึ่ง group_name เริ่มต้นนี้อาจให้ข้อผิดพลาด

แม้ว่าฉันได้เริ่มค้นหา GID จากผู้ใช้แล้ว

id username | tr '(=)' ':' | awk -F: '{print $3}

แต่สำหรับความรู้ฉันอยากรู้ จนถึงตอนนี้มี/etc/passwd /etc/groupsผู้ใช้ไม่กี่คนยกเว้น "ปิด, หยุด, ซิงค์, opeartor" ผู้ใช้ทั้งหมดที่มีรายชื่ออยู่ในกลุ่มเช่นกัน

แก้ไข 1: ชื่อผู้ใช้ id -gn เป็นตัวเลือกที่ดีเช่นกัน


3
ในตัวอย่างที่สองคุณกำลังมองหาid -g usernameอะไร?
user1686

1
หรือid -gn usernameพิมพ์ชื่อแทน ID
Cristian Ciupitu

ใน Linux ยังมี "กลุ่มอุปกรณ์" จำนวนมาก - เช่น ดิสก์, mem, kmem, เสียง, วิดีโอ ฯลฯ ซึ่งไม่มีผู้ใช้ที่เกี่ยวข้อง
Baard Kopperud

คำตอบ:


20

ไม่รับประกันว่า groupname = usernameจะมีอยู่

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

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

ดังนั้นคุณไม่ควรพึ่งพาชื่อผู้ใช้ = groupname


นอกจากนี้ยังอาจขึ้นอยู่กับนโยบายของผู้ดูแลระบบในท้องที่เท่านั้น แต่ยังขึ้นอยู่กับเครื่องมือต่างๆ เว็บไซต์หลายแห่งจะยอมรับค่าเริ่มต้นที่ใช้โดยเครื่องมือที่มีให้ ในขณะที่การกระจายส่วนใหญ่ที่ฉันใช้ในช่วงหลายปีที่ผ่านมามีuseraddสคริปต์ที่โดยค่าเริ่มต้นจะสร้างกลุ่มที่มีชื่อเดียวกัน แต่ไม่ใช่ทั้งหมด ครั้งล่าสุดที่ฉันใช้ (หลายปีที่ผ่านมา) สคริปต์การสร้างผู้ใช้ของ slackware เริ่มต้นที่มีกลุ่มเดียวusersซึ่งผู้ใช้ทั้งหมดได้เป็นสมาชิกแทน docs.slackware.com/slackbook: ผู้ใช้แนะนำว่านี่อาจเป็นกรณีนี้
จูลส์

11

แม้ว่าผู้ใช้กลุ่มส่วนตัวสำนวนมักจะใช้ในระบบ Linux ทันสมัย * ระวังไม่จริงต้องเป็นกลุ่มหลักที่ไม่ซ้ำกันสำหรับผู้ใช้แต่ละคนและเป็นไปได้มากทีเดียวสำหรับบัญชีผู้ใช้หลายที่จะแบ่งปันกลุ่มหลักทั่วไปเช่นหรือusersstaff

แม้ในกรณีที่มีการใช้สำนวน UPG แต่ก็ไม่มีเหตุผลใดที่ GID ที่เป็นตัวเลขของ UPG นั้นควรจะเท่ากับ UID ของเจ้าของแม้ว่าเครื่องมือสร้างบัญชีส่วนใหญ่จะพยายามกำหนด UID และ GID ตามลำดับ ใช้ได้ ID สามารถออกจากขั้นตอนได้อย่างง่ายดายหากผู้ใช้และ / หรือกลุ่มต้องมีความสอดคล้องกันในหลาย ๆ ระบบ (ตัวอย่างเช่นเพื่อรองรับการแบ่งปัน NFS ที่มีอยู่แล้ว)


6

ตามที่ Ramesh ได้ระบุไว้ตามค่าเริ่มต้นแล้ว UID และ GID จะเท่ากันสำหรับผู้ใช้ทั่วไป อย่างไรก็ตามนี่อาจไม่เป็นเช่นนั้นเสมอไปดังนั้นคุณจะต้องไม่ตั้งสมมติฐานเช่นนี้เพราะอาจทำให้ระบบของคุณเสียหายได้ การกำหนดสิทธิ์ของไฟล์ / โฟลเดอร์ให้กับกลุ่มผิดค่อนข้างยุ่งใช่ไหม

ดังนั้นคำตอบสั้น ๆ : ไม่ UID ไม่เท่ากับ GID เสมอไป ยังคง/etc/passwdมีทั้ง UID และ GID ของกลุ่มเริ่มต้นในบรรทัดเดียวกันดังนั้นจึงค่อนข้างง่ายที่จะแยกพวกเขา


"โดยค่าเริ่มต้น UID และ GID จะเท่ากันสำหรับผู้ใช้ทั่วไป" - จริง ๆ แล้วคำสั่งนี้เป็นจริงเฉพาะเมื่อคุณเพิ่ม "ในการกระจาย Linux ยอดนิยม" ใช่อูบุนตูและคณะ ทำเช่นนี้ แต่ฉันจะพิจารณากลุ่ม "ผู้ใช้" ทั่วไปของค่าเริ่มต้นมากขึ้น
jstarek

ใช่ถ้าเราตั้งเป้าหมายให้แม่นยำ 100% เราอาจต้องเพิ่ม 'ifs' ที่หลากหลายขึ้นเพื่อไม่พลาดข้อยกเว้นเพียงอย่างเดียว ดิสทริบิวชั่นที่ใช้เดเบียนทุกคน (LMDE, Crunchbang, เดเบียนบริสุทธิ์) ทำตัวแบบนี้และ CentOS 6.5 หนึ่งตัวก็มีเช่นกัน ใจคุณว่าตั้งแต่มีความจำเป็นสำหรับผมที่จะเพิ่มจำนวนมากของผู้ใช้ฉันมักจะใช้adduserมากกว่าuseraddและค่าเริ่มต้นใน/etc/adduser.confมีการกำหนดให้USERGROUPS=yesซึ่งจะสร้างกลุ่มสำหรับผู้ใช้ใหม่ในแต่ละ โดยทั่วไปกลุ่มเหล่านี้ (ไม่เสมอไป) มี GID เดียวกันกับ UID ของผู้ใช้ที่สร้างขึ้น
Erathiel

2

จากลิงค์นี้ฉันเห็นข้อมูลด้านล่าง

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

UID ถูกเก็บไว้พร้อมกับชื่อผู้ใช้และข้อมูลเฉพาะผู้ใช้อื่น ๆ ที่เกี่ยวข้องใน/etc/passwdไฟล์ซึ่งสามารถอ่านได้ด้วยคำสั่ง cat ดังต่อไปนี้:

cat /etc/passwd

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

แก้ไข

อย่างไรก็ตามตามที่ @Karlson ชี้ให้เห็นว่าไม่เป็นความจริงที่ UID จะเท่ากับ GID โดยค่าเริ่มต้น

คำสั่งที่เป็นความจริงเฉพาะในกรณีที่ไม่มีกลุ่มสามัญเพิ่มแยกต่างหากและไม่มีกลุ่มมีการระบุไว้อย่างชัดเจนในการสร้างผู้ใช้ใดโดยค่าเริ่มต้น GID สำหรับเพิ่มความต่อไป max(gid) + 1= ไม่มีความสัมพันธ์ระหว่าง UID และ GID ที่จำเป็นโดยระบบ * NIX ใด ๆ ที่เกิดขึ้นพร้อมกันในบางกรณี

อ้างอิงเพิ่มเติม

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


คำสั่งสุดท้ายเป็นเท็จอย่างสมบูรณ์ UID = GID เฉพาะในกรณีที่ผู้ใช้ใหม่ถูกสร้างขึ้นในระบบท้องถิ่นและ GID ไม่ได้กำหนดให้กับกลุ่มที่มีอยู่อย่างชัดเจน
Karlson

ไม่มันไม่ผิดอย่างสมบูรณ์เพราะมันบอกว่า "โดยค่าเริ่มต้น" อย่างชัดเจน การชี้แจงบางอย่างจะได้รับการชื่นชมมากที่นี่
Erathiel

1
@Erathiel ตามค่าเริ่มต้น GID จะเท่ากับ GID ที่กำหนดไว้ที่การสร้างผู้ใช้ หากผู้ใช้ถูกสร้างขึ้นในเครื่องและไม่มีการระบุ GID ในการ-gตั้งค่าสถานะในuseraddโปรแกรมจะสร้างกลุ่มให้คุณและหากไม่มีการเปลี่ยน GID เกิดขึ้นก็จะ = UID แต่ถ้าวิธีการสร้างไม่เป็นที่รู้จักคุณไม่สามารถพึ่งพาความจริงที่ว่านี้จะเป็นกรณี:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson

ในบางระบบ useradd ยังสร้างกลุ่มที่มีชื่อเดียวกันสำหรับบัญชี ขึ้นอยู่กับรสชาติของ Linux
Pete

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