วิธีการตั้งค่า umask สำหรับผู้ใช้ระบบ?


14

เป็นไปได้ไหมที่จะตั้งค่าumaskสำหรับผู้ใช้ระบบ (สร้างด้วยuseradd --system username)?

คำตอบ:


14

มีสามวิธีปกติในการตั้งค่า umask ของผู้ใช้

  1. ตั้งUMASKอยู่ที่/etc/login.defs
  2. เพิ่มpam_umask.soในการกำหนดค่า PAM ของคุณใน/etc/pam.d
  3. ตั้งไว้ในไฟล์เริ่มต้นเชลล์เช่น /etc/profile

ไม่มีความแตกต่างระหว่างผู้ใช้ระบบและผู้ใช้ปกติในเรื่องนี้

แต่ฉันสมมติว่าคุณกำลังเริ่มต้นภูตด้วย umask ที่กำหนดเอง?

ปัญหาคือ: ตัวเลือกทั้งหมดข้างต้นเกิดขึ้นเมื่อผู้ใช้ลงชื่อเข้าใช้หากคุณใช้ daemon ก็ไม่เคยเข้าสู่ระบบมันเริ่มต้นโดย init จากนั้นจึงรันเป็น root หรือเรียกsetuidให้ทำงานในฐานะผู้ใช้ระบบที่คุณระบุ .

ตัวเลือกหลักของคุณคือ:

  1. ใส่umaskสคริปต์เริ่มต้นของคุณ (ทำgrep umask /etc/init.d/*ตัวอย่าง)
  2. กำหนดค่า init เพื่อเริ่มต้นโปรแกรมด้วย umask แบบกำหนดเอง ( systemd.exec upstart umask )
  3. ถ้าใช้start-stop-daemonให้ส่งตัวเลือก umask
  4. แก้ไขโปรแกรมเองเพื่อเรียกใช้ฟังก์ชันumaskหรือการเรียกระบบ

คุณรู้วิธีตั้ง umask สำหรับ SSHFS (sftp-server) บน Arch Linux (ซึ่งใช้ systemd) หรือไม่? ตามที่คุณชี้ให้เห็นตัวเลือก 3 ตัวแรกที่คุณระบุไว้ไม่มีผลกระทบใด ๆ
MountainX

2

ผู้ใช้ระบบแตกต่างจาก 'ปกติ' ในสามวิธี: รหัสผ่านหมดอายุไดเรกทอรีภายในบ้าน (ผู้ใช้ระบบไม่มี) และ UID (ผู้ใช้ระบบมักต่ำกว่าเกณฑ์ที่กำหนด)

ในกรณีทั่วไปคุณโชคไม่ดีเลย คุณสามารถใช้ PAM เพื่อตั้งค่า umask แต่ PAM เลือกพฤติกรรมตามสิ่งอื่นนอกเหนือจากความแตกต่างทั้งสามนี้

กล่าวอีกนัยหนึ่งคุณไม่สามารถทำให้ PAM แยกความแตกต่างระหว่างผู้ใช้ 'ระบบ' และ 'ที่ไม่ใช่ระบบ' สิ่งนี้ทำให้คุณมีสองตัวเลือก:

  • ไม่ว่าคุณจะใช้ PAM เพื่อตั้งค่า umask สำหรับทุกคน (เช่นเช็คอิน/etc/login.defs) จากนั้นตั้งค่า umask อย่างชัดเจนสำหรับผู้ใช้ที่ไม่ใช่ระบบใน/etc/bash.bashrc(หรือคล้ายกัน);

  • หรือคุณเขียนโมดูล PAM ของคุณเองเพื่อทำสิ่งนี้ ฉันคิดว่าสิ่งนี้จะได้รับการต้อนรับจากคนจำนวนมากเนื่องจากการตั้งค่า umask เป็นคำขอทั่วไป

กรุณาตอบคำถามนี้ด้วยเกลือเล็กน้อย คำขอประเภทนี้เป็นเรื่องธรรมดาและฉันจะไม่แปลกใจหากมีวิธีที่ดีกว่า / เหมาะสมในขณะนี้


1
มีโมดูล PAM ชื่อpam_umaskอยู่แล้ว ปัญหาคือมันใช้งานได้เฉพาะเวลาเข้าสู่ระบบ
มิเคล

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

1

ตามที่ @Mikel แนะนำถ้าคุณพยายามกำหนดค่าบัญชีระบบซึ่งเป็น daemon ให้ลองกำหนดค่า daemon เอง

ฉันมาถึงคำถามนี้เพื่อดูวิธีตั้ง umask สำหรับบัญชี _www บน MacOS ในขณะนี้เป็นเรื่องยากตามคำแนะนำข้างต้นฉันพบว่าฉันสามารถแก้ไขได้โดยการกำหนดค่าบริการ apache เป็น (ในกรณีนี้) ผู้ใช้ == a daemon

ฉันไม่สามารถค้นหาสคริปต์เริ่มต้น (โดยปกติใน /etc/init.d/ แต่สำหรับ mac ใน Library / LaunchDaemons /) แต่ด้วยความช่วยเหลือจาก: http://krypted.com/mac-security/apache2-umasks /ค้นพบว่า Apache มีสคริปต์สภาพแวดล้อมเฉพาะของตนเอง

$ sudo vim /usr/sbin/envvars
    umask 002

อาจมี daemons อื่น ๆ ที่มีวิธีการคล้ายกันซึ่งอาจช่วยในบางกรณี


แต่คุณสามารถเขียน "umask 002" ลงในไฟล์นี้ได้อย่างไร!?!? ฉันได้รับอนุญาตปฏิเสธข้อผิดพลาดแม้ในขณะที่ root / sudo และตามที่ Apple แม้แต่ root ไม่ได้รับอนุญาตให้เขียน / เปลี่ยนแปลงอะไรในไดเรกทอรี / usr / sbin support.apple.com/th-gb/HT204899
Schurik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.