วิธีการเปลี่ยนโหมด umask อย่างถาวร?


4

ฉันได้อ่านบทความสองสามอย่างเช่นบทความเก่านี้ว่าจะเปลี่ยนโหมดumask ได้อย่างไรแต่ก็ยังไม่สามารถคิดออกได้ 100% ฉันมี Ubuntu 14.04 ที่ทำงานด้วยเคอร์เนล Xenial พร้อมumaskเริ่มต้น0002และเป้าหมายของฉันคือตั้งโหมดumask 0027อย่างถาวรทั้งหมด ข้ามระบบ ฉันจะทำให้มันเกิดขึ้นได้อย่างไร อะไรคือวิธีที่ดีที่สุดในการทำเช่นนั้น?

คำตอบ:


4

ความเรียบง่ายman -k umaskควรทำให้คุณอ่านman pam_umaskส่วนหนึ่งกล่าวว่า:

DESCRIPTION
pam_umask is a PAM module to set the file mode creation mask of the
current environment. The umask affects the default permissions assigned
to newly created files. 

มันยังบอกว่า

The PAM module tries to get the umask value from the following places
   in the following order:

   ·   umask= argument

   ·   umask= entry in the user's GECOS field

   ·   UMASK= entry from /etc/default/login

   ·   UMASK entry from /etc/login.defs (influenced by USERGROUPS_ENAB in
       /etc/login.defs)

ใน /etc/login.defs ฉันพบสองบรรทัดเช่น: การเริ่มต้นการกำหนดค่าเข้าสู่ระบบUMASK ค่าเริ่มต้น "umask" ค่า และUMASK 022ต่อไปฉันควรเปลี่ยนแปลงอะไรที่นี่ ดูเหมือนว่าฉันพยายามที่จะทำให้ตัวเอง 022 แต่ก็ยังเมื่อฉันทำงานใน terminal umaskมันบอกว่า 0002
JoKeR

นี่คือสิ่งหนึ่งที่ฉันได้รับตอนนี้หลังจากที่ฉันเปลี่ยนค่า022เป็น027และเมื่อฉันเรียกใช้umaskในเทอร์มินัลตอนนี้ฉันได้รับumask 0007ดังนั้นฉันจะได้รับ0027ได้อย่างไร ฉันพยายามที่จะใส่047แต่ก็ยังทำให้ฉันได้รับ0007
JoKeR

3

ขอบคุณ @altinator ที่ชี้ให้ฉันเห็นทิศทางที่ถูกต้อง

จากที่นี่ฉันคิดว่าขั้นตอนง่าย ๆ วิธีการตั้งโหมดumaskเป็น0027เพียงแค่เรียกใช้ใน terminal:

sudo gedit /etc/login.defs

หรือnanoสิ่งที่คุณต้องการ

ค้นหาบรรทัด:

Prefix these values with "0" to get octal, "0x" to get hexadecimal.

ERASECHAR   0177
KILLCHAR    025
UMASK       027

แก้ไขบรรทัดสุดท้ายที่อ้างถึงUMASKสิ่งนี้จะตั้งค่าumaskเป็น0007เพื่อให้มีผลเพียงออกจากระบบและเข้าสู่ระบบกลับ

แจ้งให้ทราบล่วงหน้าในบรรทัดด้านบน: หาก USERGROUPS_ENAB ถูกตั้งค่าเป็น "ใช่" นั่นจะแก้ไขค่าเริ่มต้นของ UMASK นี้ ... ใช้เป็นสิทธิ์กลุ่มเช่น 022 จะกลายเป็น 002

ดังนั้นสำหรับumask 0027เพื่อให้เอฟเฟกต์กลิ้งลงไปที่บรรทัด:

USERGROUPS_ENAB yes

และเปลี่ยนเป็น:

USERGROUPS_ENAB no

เสร็จสิ้น หลังจากที่คุณออกจากระบบและเข้าสู่ระบบกลับมาทำงานใน terminal umaskและมันจะให้0027โหมด

ตอนนี้สร้างไฟล์ใหม่ด้วยtouchใน terminal:

touch testfile

ตอนนี้ตรวจสอบการอนุญาต:

stat -c %a ~/testfile

ควรให้คุณ640


มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉันจนกระทั่งต่อมามีข้อผิดพลาดอื่น ๆ กับ dbus ใน Ubuntu หลังจาก 17.04 โปรดอ่านbugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/1685754/…
fchen

0

ฉันใช้คำตอบของ JoKeR ด้านบนเพื่อให้ได้ระบบที่ครอบคลุม 027 แต่ฉันก็รู้สึกว่าเมื่อฉันใช้USERGROUPS_ENAB noมันจำเป็นต้องมีการจัดการกลุ่มมากขึ้น ดังนั้นฉันรู้สึกว่าฉันได้พบคำตอบที่ดีกว่าโดยทั่วไป:

  1. ตรวจสอบให้แน่ใจว่ามีการติดตั้งแพคเกจโมดูลแพม; ที่ทำให้โมดูล pam_umask พร้อมใช้งาน
  2. ตรวจสอบให้แน่ใจว่า /etc/pam.d/common-session มีบรรทัดของแบบฟอร์ม
    session optional pam_umask.so
    เพื่อให้ pam_umask เปิดใช้งาน
  3. ตามหน้า pam_umask man umask เริ่มต้นจะถูกกำหนดที่การเข้าสู่ระบบโดยการตรวจสอบสถานที่ต่อไปนี้ตามลำดับ:
    • การตั้งค่าเริ่มต้นทั้งระบบฮาร์ดใน /etc/pam.d/common-session หากต้องการตั้งค่าด้วยวิธีนี้ให้แทนที่บรรทัดจากไฟล์ดังกล่าวข้างต้นด้วย:
      session optional pam_umask.so umask=027
    • รายการในฟิลด์ GECOS ของผู้ใช้แต่ละรายใน / etc / passwd จะแทนที่ค่าเริ่มต้นทั้งระบบสำหรับผู้ใช้ที่ระบุ สร้างรายการนั้นโดยใช้คำสั่งของแบบฟอร์ม:
      chfn --other='umask=027' username
    • บรรทัดของแบบฟอร์มUMASK=027ใน / etc / default / เข้าสู่ระบบ (คุณอาจต้องสร้างไฟล์นั้น) ตั้งค่าเริ่มต้นทั้งระบบ
    • ค่า UMASK จาก /etc/login.defs ค่าดังกล่าวยังใช้เพื่อสิ่งอื่น (คำนวณสิทธิ์บนโฮมไดเร็กทอรีของผู้ใช้ใหม่ที่กำลังสร้างดูความคิดเห็นใน /etc/login.defs สำหรับรายละเอียดเพิ่มเติม) ดังนั้นควรหลีกเลี่ยงการใช้สิ่งนี้เพื่อตั้งค่า umask เริ่มต้นสำหรับการเข้าสู่ระบบปกติเพื่อแยกสิ่งต่าง ๆ

ดังนั้นตอนนี้สำหรับฉันฉันใช้ตัวเลือกแรก (ชุดระบบเริ่มต้นใน /etc/pam.d/common-session) และมันใช้งานได้ดีจริงๆ

ขอให้โชคดีเพื่อนของฉัน :)

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