Jawaban:
Ada tiga cara normal untuk mengatur umask pengguna.
UMASK
in/etc/login.defs
pam_umask.so
ke konfigurasi PAM Anda di/etc/pam.d
/etc/profile
Tidak ada perbedaan antara pengguna sistem dan pengguna normal dalam hal ini.
Tapi saya berasumsi Anda mencoba memulai daemon dengan umask khusus?
Masalahnya adalah: semua opsi di atas terjadi ketika pengguna masuk. Jika Anda menjalankan daemon, itu tidak pernah masuk. Dimulai oleh init, lalu dijalankan sebagai root, atau panggilan setuid
untuk dijalankan sebagai pengguna sistem yang Anda tentukan .
Pilihan utama Anda adalah:
umask
skrip init Anda (lakukan grep umask /etc/init.d/*
sebagai contoh)start-stop-daemon
, berikan opsi umaskPengguna sistem berbeda dari yang 'normal' dalam tiga cara: kadaluwarsa kata sandi, direktori home (pengguna sistem tidak memilikinya), dan UID (pengguna sistem biasanya di bawah ambang batas yang sewenang-wenang).
Secara umum, Anda hampir seluruhnya tidak beruntung. Anda dapat menggunakan PAM untuk mengatur umask, tetapi PAM memilih perilaku berdasarkan hal-hal selain dari tiga perbedaan ini.
Dengan kata lain, Anda tidak bisa membuat PAM membedakan antara pengguna 'sistem' dan 'non-sistem'. Ini membuat Anda memiliki dua opsi:
Anda menggunakan PAM untuk mengatur umask untuk semua orang (mis. Check-in /etc/login.defs
), kemudian secara eksplisit mengatur umask untuk pengguna non-sistem di /etc/bash.bashrc
(atau serupa);
Atau Anda menulis modul PAM Anda sendiri untuk melakukan ini. Saya pikir ini akan disambut oleh banyak orang, karena pengaturan umask adalah permintaan umum.
Silakan ambil jawaban ini dengan sedikit garam. Permintaan semacam ini sangat umum, dan saya tidak akan terkejut jika ada cara yang lebih baik / tepat sekarang.
pam_umask
, tapi mungkin tidak pam_succeed_if
. Dengan pam_succeed_if , Anda dapat membuat modul lain hanya berlaku untuk pengguna atau grup tertentu. Tapi saya masih berpikir PAM tidak akan membantu di sini.
Seperti yang disarankan @Mikel, jika Anda mencoba mengonfigurasi akun sistem yang merupakan daemon, coba konfigurasikan daemon itu sendiri.
Saya sampai pada pertanyaan ini mencari cara mengatur umask untuk akun _www di MacOS. Walaupun ini sulit seperti jawaban di atas menyarankan, saya menemukan saya bisa menyelesaikannya dengan mengkonfigurasi layanan apache sebagai (dalam hal ini) pengguna == a daemon.
Anehnya saya tidak dapat menemukan skrip startup (biasanya di /etc/init.d/ tetapi pada mac di Library / LaunchDaemons /), tetapi dengan bantuan dari: http://krypted.com/mac-security/apache2-umasks Saya menemukan bahwa apache memiliki skrip lingkungan spesifiknya sendiri.
$ sudo vim /usr/sbin/envvars
umask 002
Mungkin daemon lain memiliki metode serupa, yang mungkin membantu dalam kasus tertentu.