// อัปเดตเมื่อ 8 ก.พ. - สรุปประเด็นสำคัญโดยย่อ:
- วิธี umask ไดเรกทอรีแตกต่างจากไฟล์ได้อย่างไร
- วิธีการ umask บน Nautilus คัดลอก / วางได้อย่างไร
- วิธีการตั้งค่า umask สำหรับ SSHFS
สถานการณ์ของเรา
หลายคนจาก บริษัท ของเราเข้าสู่เซิร์ฟเวอร์และอัปโหลดไฟล์ พวกเขาทุกคนต้องสามารถอัปโหลดและเขียนทับไฟล์เดียวกันได้ พวกเขามีชื่อผู้ใช้ที่แตกต่างกัน แต่ทั้งหมดอยู่ในกลุ่มเดียวกัน อย่างไรก็ตามนี่คืออินเทอร์เน็ตเซิร์ฟเวอร์ดังนั้นผู้ใช้ "อื่น ๆ " ควรมี (โดยทั่วไป) เพียงแค่เข้าถึงแบบอ่านอย่างเดียว ดังนั้นสิ่งที่ฉันต้องการคือสิทธิ์มาตรฐานเหล่านี้:
ไฟล์: 664
ไดเรกทอรี: 771
เป้าหมายของฉันคือผู้ใช้ทุกคนไม่จำเป็นต้องกังวลเกี่ยวกับการอนุญาต เซิร์ฟเวอร์ควรได้รับการกำหนดค่าในลักษณะที่การอนุญาตเหล่านี้นำไปใช้กับไฟล์และไดเรกทอรีทั้งหมดที่สร้างขึ้นใหม่คัดลอกหรือเขียนทับมากเกินไป เมื่อเราต้องการการอนุญาตพิเศษบางอย่างเราจะเปลี่ยนสิ่งนี้ด้วยตนเอง
เราอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์โดย SFTP-ing ใน Nautilus โดยติดตั้งเซิร์ฟเวอร์โดยใช้ sshfs และเข้าถึงใน Nautilus ราวกับว่าเป็นโฟลเดอร์ในเครื่องและโดย SCP-ing ในบรรทัดคำสั่ง โดยทั่วไปครอบคลุมสถานการณ์ของเราและสิ่งที่เรามุ่งมั่นที่จะทำ
ตอนนี้ฉันได้อ่านหลายสิ่งเกี่ยวกับฟังก์ชั่น umask ที่สวยงาม จากสิ่งที่ฉันเข้าใจ umask (ร่วมกับ PAM) ควรอนุญาตให้ฉันทำสิ่งที่ฉันต้องการ: ตั้งค่าการอนุญาตมาตรฐานสำหรับไฟล์และไดเรกทอรีใหม่ อย่างไรก็ตามหลังจากหลายชั่วโมงของการอ่านและการลองผิดลองถูกฉันก็ยังไม่สามารถใช้งานได้ ฉันได้รับผลลัพธ์ที่ไม่คาดคิดมากมาย ฉันชอบที่จะเข้าใจ umask และมีคำถามมากมายที่ยังไม่ได้ตอบ ฉันจะโพสต์คำถามเหล่านี้ด้านล่างพร้อมกับข้อค้นพบและคำอธิบายของการทดลองของฉันที่นำไปสู่คำถามเหล่านี้ เนื่องจากมีหลายสิ่งที่ดูเหมือนผิดพลาดฉันคิดว่าฉันกำลังทำสิ่งผิดหลายอย่าง ดังนั้นจึงมีคำถามมากมาย
หมายเหตุ: ฉันใช้ Ubuntu 9.10 และดังนั้นจึงไม่สามารถเปลี่ยน sshd_configเพื่อตั้ง umask สำหรับเซิร์ฟเวอร์ SFTP ติดตั้ง SSH OpenSSH_5.1p1 Debian-6ubuntu2 <ต้องการ OpenSSH 5.4p1 ดังนั้นไปที่คำถาม
1. ฉันจำเป็นต้องเริ่มต้นใหม่สำหรับ PAM CHANGS เพื่อรับผลหรือไม่
เริ่มจากสิ่งนี้กันก่อน มีไฟล์จำนวนมากที่เกี่ยวข้องและฉันไม่สามารถคิดออกว่าอะไรและสิ่งที่ไม่ส่งผลกระทบต่อสิ่งต่าง ๆ เพราะฉันไม่รู้ว่าฉันต้องรีสตาร์ททั้งระบบเพื่อให้การเปลี่ยนแปลง PAM มีผลหรือไม่ ฉันทำเช่นนั้นหลังจากไม่เห็นผลลัพธ์ที่คาดหวัง แต่สิ่งนี้จำเป็นจริงๆหรือ หรือฉันจะออกจากระบบเซิร์ฟเวอร์และลงชื่อเข้าใช้อีกครั้งและนโยบาย PAM ใหม่ควรมีผลหรือไม่ หรือมีโปรแกรม 'PAM' ที่จะโหลดซ้ำ
2. มีไฟล์เดียวที่จะเปลี่ยนแปลงที่ส่งผลต่อผู้ใช้ทุกคนในทุกช่วงเวลาหรือไม่?
ดังนั้นฉันจึงสิ้นสุดการเปลี่ยนไฟล์ MANY เมื่อฉันอ่านสิ่งต่าง ๆ มากมาย ฉันสิ้นสุดการตั้งค่า umask ในไฟล์ต่อไปนี้:
~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002
ฉันต้องการให้การเปลี่ยนแปลงนี้มีผลกับผู้ใช้ทั้งหมดดังนั้นการเปลี่ยนแปลงทั่วทั้งระบบจะเป็นการดีที่สุด มันสามารถทำได้หรือไม่
3. หลังจากทั้งหมดสิ่ง UMASK นี้ทำงานได้หรือไม่
ดังนั้นหลังจากเปลี่ยน umask เป็น 0002 ในทุก ๆ ที่ที่เป็นไปได้ฉันก็ทำการทดสอบ
------------ SCP -----------
ทดสอบ 1:
scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile 100% 4 0.0KB/s 00:00
ตรวจสอบการอนุญาต:
user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)
UPDATE: แก้ไขโดยการตั้งค่า umask ใน pam.d / common-session เท่านั้น (ดูความคิดเห็น)
--------- SSH ------------
ทดสอบ 2:
ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)
-------- SFTP -----------
Nautilus: sftp: // server / home /
คัดลอกและวาง newfile จากไคลเอนต์ไปยังเซิร์ฟเวอร์ (777 บนไคลเอนต์)
ทดสอบ 3:
user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)
สร้างไฟล์ใหม่ผ่าน Nautilus ตรวจสอบการอนุญาตของไฟล์ในเทอร์มินัล:
ทดสอบ 4:
user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders 0 2011-02-05 18:06 newfile (600)
ฉันหมายถึง ... เกิดอะไรขึ้นที่นี่! เราควรได้ 644 ทุก ๆ ครั้ง แต่ฉันได้รับ 711, 777, 600 และจากนั้น 644 ครั้งและ 644 นั้นจะทำได้ก็ต่อเมื่อสร้างไฟล์เปล่าใหม่ผ่าน SSH ซึ่งเป็นสถานการณ์ที่น่าจะเกิดขึ้นน้อยที่สุด
ดังนั้นฉันจึงถามว่า umask / pam ทำงานได้ไหม?
UPDATE: แก้ไขการทดสอบ 4 โดยการตั้งค่า umask ใน pam.d / common-session เท่านั้น (ดูความคิดเห็น)
4. แล้วมันหมายถึงอะไรกับ UMASK SSHFS?
บางครั้งเราติดตั้งเซิร์ฟเวอร์ในเครื่องโดยใช้ sshfs มีประโยชน์มาก. แต่อีกครั้งเรามีปัญหาการอนุญาต
นี่คือวิธีที่เราติดตั้ง:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
หมายเหตุ: เราใช้ umask = 113 เพราะเห็นได้ชัดว่า sshfs เริ่มต้นที่ 777 แทนที่จะเป็น 666 ดังนั้นด้วย 113 เราจะได้รับ 664 ซึ่งเป็นการอนุญาตไฟล์ที่ต้องการ
แต่สิ่งที่เกิดขึ้นตอนนี้คือเราเห็นไฟล์และไดเรกทอรีทั้งหมดราวกับว่าพวกเขาเป็น 664 เราเรียกดูใน Nautilus ถึง / mnt และ:
- คลิกขวา -> ไฟล์ใหม่ (ไฟล์ใหม่) --- ทดสอบ 5
- คลิกขวา -> โฟลเดอร์ใหม่ (โฟลเดอร์ใหม่) --- การทดสอบ 6
- คัดลอกและวางไฟล์ 777 จากลูกค้าในพื้นที่ของเรา --- ทดสอบ 7
ลองตรวจสอบบรรทัดคำสั่ง:
user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007 3 Feb 5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007 0 Feb 5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb 5 18:15 newfolder (664)
แต่เดี๋ยวก่อนลองตรวจสอบโฟลเดอร์เดียวกันนี้ที่ฝั่งเซิร์ฟเวอร์:
user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders 0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)
อะไร?! การอนุญาตไฟล์ REAL นั้นแตกต่างจากที่เราเห็นใน Nautilus มาก ดังนั้น umask บน sshfs นี้เพียงสร้าง 'ตัวกรอง' ที่แสดงการอนุญาตของไฟล์ที่ไม่เป็นจริงหรือไม่? และฉันพยายามที่จะเปิดไฟล์จากผู้ใช้คนอื่น แต่กลุ่มเดียวกันที่มีสิทธิ์ 600 จริง แต่ 644 'ปลอม' สิทธิ์และฉันยังคงไม่สามารถอ่านนี้ดังนั้นสิ่งที่ดีคือตัวกรองนี้?
5. UMASK เป็นข้อมูลเกี่ยวกับไฟล์ทั้งหมด แต่สิ่งที่เกี่ยวกับผู้อำนวยการ?
จากการทดสอบของฉันฉันจะเห็นว่า umask ที่ถูกนำไปใช้ยังมีผลต่อสิทธิ์ไดเรกทอรี อย่างไรก็ตามฉันต้องการให้ไฟล์ของฉันเป็น 664 (002) และไดเรกทอรีของฉันเป็น 771 (006) ดังนั้นจึงเป็นไปได้ที่จะมี umask ที่แตกต่างกันสำหรับไดเรกทอรี?
6. PERHAPS UMASK / PAM เย็นจริงๆ แต่ UBUNTU เป็นเพียง BUGGY หรือไม่
ในอีกด้านหนึ่งฉันได้อ่านหัวข้อของผู้คนที่ประสบความสำเร็จกับ PAM / UMASK และ Ubuntu ในทางกลับกันฉันได้พบข้อบกพร่องที่เก่าและใหม่กว่ามากมายเกี่ยวกับ umask / PAM / fuse บน Ubuntu:
- https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/241198
- https://bugs.launchpad.net/ubuntu/+source/fuse/+bug/239792
- https://bugs.launchpad.net/ubuntu/+source/pam/+bug/253096
- https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/549172
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314796
ดังนั้นฉันไม่รู้จะเชื่ออะไรอีก ฉันควรจะยอมแพ้? ACLจะแก้ปัญหาทั้งหมดของฉันได้ไหม หรือฉันมีปัญหาอีกครั้งในการใช้ Ubuntu?
หนึ่งคำเตือนด้วยการสำรองข้อมูลโดยใช้ tar การกระจาย Red Hat / Centos สนับสนุน acls ในโปรแกรม tar แต่ Ubuntu ไม่สนับสนุน acls เมื่อสำรองข้อมูล ซึ่งหมายความว่า acls ทั้งหมดจะหายไปเมื่อคุณสร้างสำเนาสำรอง
ฉันยินดีที่จะอัพเกรดเป็น Ubuntu 10.04 ถ้านั่นจะช่วยแก้ปัญหาของฉันเช่นกัน แต่ก่อนอื่นฉันต้องเข้าใจว่าเกิดอะไรขึ้น