เหตุใดไฟล์ในบ้านของฉันจึงถูกสร้างขึ้นเป็นแบบเขียนได้ทั่วโลกแม้จะมีข้อ จำกัด มากขึ้น


10

ฉันได้ตระหนักว่าการอนุญาตสำหรับไฟล์และไดเรกทอรีใหม่มีลักษณะแปลกไปบ้าง ก่อนอื่น umask ดูเหมือนจะกลับคำตอบที่ถูกต้อง:

$ umask
0002

นี่หมายถึงการเข้าถึงอย่างเต็มรูปแบบสำหรับผู้ใช้และกลุ่มของฉันไม่มีการเข้าถึงเพื่อเขียนสำหรับส่วนที่เหลือของโลก แต่ถ้าฉันสร้างไฟล์ใน $ HOME ของฉันนี่คือลักษณะ:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

เช่นการให้สิทธิ์การเขียนแก่ทุกคน สิ่งเดียวกันนี้เกิดขึ้นกับไดเรกทอรี:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

ฉันคิดว่านี่เหมือนกับ umask 0000 ไม่ใช่ 0002 ฉันได้ค้นหาทั้งหมด / etc สำหรับตัวอย่างของ umask ที่เปลี่ยนค่าเริ่มต้น 0002 หรือ 0022 แต่ไม่พบเลย นี่คือการติดตั้ง CentOS 5.5 เริ่มต้น คำใบ้ว่าทำไมถึงเกิดขึ้น?


3
โฮมไดเร็กตอรี่ของคุณคืออะไร?
mattdm

4
และคุณสร้างอย่างไรtestfileและ testdir
mattdm

3
@mattdm คุณถูกต้องยืนยัน: มันคือ XFS ฉันลืมว่าเรามีเล่มแยกต่างหากสำหรับ / home, / var และอีกมากมาย แม้ว่าฉันจะใช้ XFS บ่อยครั้งและไม่เคยเห็นพฤติกรรมนี้ มันจะเกี่ยวข้องกันอย่างไร?
rsuarez

2
acl สามารถแทนที่ umask ในเครื่องได้ เป็นไปได้ว่าไดเรกทอรีของคุณจะถูกติดตั้งด้วย acl?
Faheem Mitha

3
อืมดูเหมือนว่า xfs จะเปิดใช้งาน acl เสมอ ดังนั้นจึงอาจไม่แสดงใน / etc / fstab ของคุณ ลองใช้ getfacl บนพาร์ติชั่น / ไดเรกทอรีของคุณ
Faheem Mitha

คำตอบ:


3

ฉันไม่รู้ว่าเหมาะสมที่จะตอบคำถามของฉันเองหรือไม่ ผู้แก้ไขโปรดแนะนำในเรื่องนี้หากไม่เป็นเช่นนั้น ขอบคุณล่วงหน้า.

ฉันคิดว่าฉันได้แก้ปริศนานี้แล้ว: ปัญหาคือการขาด ACL เริ่มต้นในโวลุ่ม XFS นี่คือรายการ ACL สำหรับ / srv / backups ซึ่งเป็นหนึ่งในไดเรกทอรีที่ได้รับผลกระทบ:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

เมื่อใดก็ตามที่ฉันได้ "mkdir test" หรือ "touch testfile" มันจะเกิดขึ้นด้วยสิทธิ์ 777 ดังนั้นฉันจึงทำสิ่งนี้:

setfacl -m d:u::rwx /srv/backups

ออกจาก ACL ดังนี้:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

ก่อนหน้านี้มี (สมมุติ) ไม่มี ACL แต่ตอนนี้มี ฉันเห็นเครื่องหมาย "+" แนบกับสิทธิ์เมื่อฉันทำ "ls -l" และน่าอัศจรรย์ตอนนี้ "การทดสอบ mkdir" และ "สัมผัส testfile" ทำงานกับสิทธิ์ที่คาดหวัง:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

ฉันไม่รู้ว่าทำไมสิ่งนี้จึงเกิดขึ้น ฉันเดาว่า XFS ไม่ชอบไม่มี ACL เริ่มต้นและทำงานผิดปกติเมื่อมันเกิดขึ้น นอกจากนี้ฉันได้เห็นสิ่งนี้เกิดขึ้นเฉพาะใน CentOS ไม่ใช่ใน Debian / Ubuntu อาจเกี่ยวข้องกับเวอร์ชัน XFS ในเคอร์เนลหรืออะไรทำนองนั้น ไม่มีความเห็น.

อย่างไรก็ตามนั่นเป็นสิ่งที่ตัดสินสำหรับฉัน ขอบคุณมากสำหรับคำแนะนำทั้งหมด :-)


การตอบคำถามของคุณเองเป็นที่ยอมรับอย่างสมบูรณ์
Keith Thompson

0

การเรียก creat สามารถระบุสิทธิ์ที่ชัดเจนกว่า umask ได้อย่างชัดเจน

คุณยังไม่ได้ตอบว่าคุณสร้างtestfile,testdirอย่างไร

สร้างไฟล์โดยใช้touch testfileจากนั้นแสดงรายการและโพสต์การอนุญาต


ขออภัยในความล่าช้า. ฉันทำการทดสอบโดยใช้ "touch testfile" และ "mkdir testdir" ด้วยผลลัพธ์ที่คล้ายกัน umask ดูเหมือนว่าจะถูกตั้งค่าเป็น "0000" เพราะพวกเขาถูกสร้างขึ้นด้วยสิทธิ์ 777
rsuarez

0

ลองgetfacl .ในไดเรกทอรีที่คุณสร้างไฟล์ทดสอบของคุณเพื่อดูว่ามี acl เริ่มต้นที่มีผลต่อสิทธิ์


1
ไม่ไม่มี ACL เริ่มต้น ดูเหมือนว่าจะเกี่ยวข้องกับ XFS อย่างใดเพราะมันเกิดขึ้นในปริมาณ XFS เท่านั้น แต่ขอบคุณล่ะค่ะ
rsuarez

-1

เพียงมองหาตัวแปร USERGROUPS_ENAB บน /etc/login.defs

แสดงความคิดเห็นเพื่อปิดการใช้งาน # USERGROUPS_ENAB ใช่

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

ตัวอย่างเช่น 027

echo "umask 027" >> ~ / .bashrc && pkill -KILL -u your_username_here ของคุณ

echo "umask 027" >> ~ / .bashrc คำสั่งนี้จะตั้งค่าเริ่มต้น umask สำหรับโปรไฟล์ของคุณ

สิ่งนี้จะบังคับให้คุณออกจากระบบ

หลังจากเข้าสู่ระบบอีกครั้ง

เพียงแค่เรียกใช้ umask comand อีกครั้งและดูว่าเหมาะกับคุณหรือไม่

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