เป็นไปได้ไหมที่จะตั้งค่าumaskสำหรับผู้ใช้ระบบ (สร้างด้วยuseradd --system username)?
เป็นไปได้ไหมที่จะตั้งค่าumaskสำหรับผู้ใช้ระบบ (สร้างด้วยuseradd --system username)?
คำตอบ:
มีสามวิธีปกติในการตั้งค่า umask ของผู้ใช้
UMASKอยู่ที่/etc/login.defspam_umask.soในการกำหนดค่า PAM ของคุณใน/etc/pam.d/etc/profileไม่มีความแตกต่างระหว่างผู้ใช้ระบบและผู้ใช้ปกติในเรื่องนี้
แต่ฉันสมมติว่าคุณกำลังเริ่มต้นภูตด้วย umask ที่กำหนดเอง?
ปัญหาคือ: ตัวเลือกทั้งหมดข้างต้นเกิดขึ้นเมื่อผู้ใช้ลงชื่อเข้าใช้หากคุณใช้ daemon ก็ไม่เคยเข้าสู่ระบบมันเริ่มต้นโดย init จากนั้นจึงรันเป็น root หรือเรียกsetuidให้ทำงานในฐานะผู้ใช้ระบบที่คุณระบุ .
ตัวเลือกหลักของคุณคือ:
umaskสคริปต์เริ่มต้นของคุณ (ทำgrep umask /etc/init.d/*ตัวอย่าง)start-stop-daemonให้ส่งตัวเลือก umaskผู้ใช้ระบบแตกต่างจาก 'ปกติ' ในสามวิธี: รหัสผ่านหมดอายุไดเรกทอรีภายในบ้าน (ผู้ใช้ระบบไม่มี) และ UID (ผู้ใช้ระบบมักต่ำกว่าเกณฑ์ที่กำหนด)
ในกรณีทั่วไปคุณโชคไม่ดีเลย คุณสามารถใช้ PAM เพื่อตั้งค่า umask แต่ PAM เลือกพฤติกรรมตามสิ่งอื่นนอกเหนือจากความแตกต่างทั้งสามนี้
กล่าวอีกนัยหนึ่งคุณไม่สามารถทำให้ PAM แยกความแตกต่างระหว่างผู้ใช้ 'ระบบ' และ 'ที่ไม่ใช่ระบบ' สิ่งนี้ทำให้คุณมีสองตัวเลือก:
ไม่ว่าคุณจะใช้ PAM เพื่อตั้งค่า umask สำหรับทุกคน (เช่นเช็คอิน/etc/login.defs) จากนั้นตั้งค่า umask อย่างชัดเจนสำหรับผู้ใช้ที่ไม่ใช่ระบบใน/etc/bash.bashrc(หรือคล้ายกัน);
หรือคุณเขียนโมดูล PAM ของคุณเองเพื่อทำสิ่งนี้ ฉันคิดว่าสิ่งนี้จะได้รับการต้อนรับจากคนจำนวนมากเนื่องจากการตั้งค่า umask เป็นคำขอทั่วไป
กรุณาตอบคำถามนี้ด้วยเกลือเล็กน้อย คำขอประเภทนี้เป็นเรื่องธรรมดาและฉันจะไม่แปลกใจหากมีวิธีที่ดีกว่า / เหมาะสมในขณะนี้
pam_umask pam_succeed_ifด้วยpam_succeed_ifคุณสามารถทำให้โมดูลอื่นใช้เฉพาะกับผู้ใช้หรือกลุ่มที่กำหนด แต่ฉันก็ยังไม่คิดว่า PAM จะช่วยเหลือที่นี่
ตามที่ @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 อื่น ๆ ที่มีวิธีการคล้ายกันซึ่งอาจช่วยในบางกรณี