เป็นไปได้ไหมที่จะตั้งค่าumask
สำหรับผู้ใช้ระบบ (สร้างด้วยuseradd --system username
)?
เป็นไปได้ไหมที่จะตั้งค่าumask
สำหรับผู้ใช้ระบบ (สร้างด้วยuseradd --system username
)?
คำตอบ:
มีสามวิธีปกติในการตั้งค่า umask ของผู้ใช้
UMASK
อยู่ที่/etc/login.defs
pam_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 อื่น ๆ ที่มีวิธีการคล้ายกันซึ่งอาจช่วยในบางกรณี