Bagaimana cara mengatur umask untuk pengguna sistem?

14

Apakah mungkin untuk mengatur pengguna umasksistem (dibuat dengan useradd --system username)?

sid_com
sumber

Jawaban:

14

Ada tiga cara normal untuk mengatur umask pengguna.

  1. Set UMASKin/etc/login.defs
  2. Tambahkan pam_umask.soke konfigurasi PAM Anda di/etc/pam.d
  3. Atur di file startup shell, mis /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 setuiduntuk dijalankan sebagai pengguna sistem yang Anda tentukan .

Pilihan utama Anda adalah:

  1. masukkan umaskskrip init Anda (lakukan grep umask /etc/init.d/*sebagai contoh)
  2. konfigurasikan init untuk memulai program dengan custom umask ( systemd.exec pemula pemula )
  3. jika menggunakan start-stop-daemon, berikan opsi umask
  4. memodifikasi program itu sendiri untuk memanggil fungsi umask atau panggilan sistem
Mikel
sumber
Apakah Anda tahu cara mengatur umask untuk SSHFS (sftp-server) di Arch Linux (yang menggunakan systemd)? Seperti yang Anda tunjukkan, 3 opsi pertama yang Anda daftarkan tidak memiliki efek apa pun.
MountainX-for-Monica
2

Pengguna 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.

Alexios
sumber
1
Sudah ada modul PAM yang disebut pam_umask . Masalahnya hanya berfungsi saat login.
Mikel
Ah, saya pikir Anda sudah tahu 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.
Mikel
1

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.

Scipilot
sumber
Tetapi bagaimana Anda bisa menulis "umask 002" ke dalam file ini?!?!? Saya mendapatkan izin yang ditolak kesalahan bahkan sebagai root / sudo dan menurut apple even root tidak diperbolehkan untuk menulis / mengubah apa pun di direktori / usr / sbin support.apple.com/en-gb/HT204899
Schurik