Menggunakan Gnome 3.18. Saya berbagi file antara anggota keluarga lainnya, tetapi umask default pada distro saya (archlinux) adalah 0022
. Jadi setiap file / direktori yang dibuat tidak dapat ditulis untuk grup umum kami.
Saya mencoba untuk menempatkan umask 0002
di /etc/profile
tetapi sesi gnome masih menggunakan 0022
. Ini bekerja untuk shell bash login.
Saya juga mencoba menambahkan baris ini di /etc/pam.d/system-auth
:
session required pam_umask.so umask=0002
Ini memiliki efek yang sama dengan yang ada di /etc/profile
. Saya mencoba
Jika saya mengubah umask secara manual di shell terminal-gnome, maka saya meluncurkan aplikasi darinya, katakan gedit, maka file yang dibuat olehnya memiliki izin yang diinginkan. Jika saya meluncurkan gedit dari menu gnome, itu tidak. Jadi masalah saya adalah mengatur umask untuk sesi gnome, dan saya tidak bisa menemukan tempat untuk melakukannya.
EDIT (untuk menjawab komentar Gilles): Saya menggunakan gdm 3.18 sebagai DM. Saya juga mencoba menambahkan baris pam_umask ke /etc/pam.d/gdm-launch-environment
. Semua gdm-*
file lain berisi termasuk dari session
dari system-auth
file, jadi mereka tidak perlu lagi. Itu tidak mengubah apa pun.
/etc/login.defs
berisi UMASK 077
tetapi juga USERGROUPS_ENAB yes
yang harus mengatur umask
untuk salah satu 0077
atau 0007
untuk pengguna yang grup utamanya adalah nama pengguna.
Satu-satunya file yang berisi 022
untuk umask /etc
adalah /etc/profile
tetapi itu adalah percobaan pertama saya.
Adapun /etc/Xsession.d
, saya tidak punya direktori ini. Selain itu, karena wayland sekarang adalah server tampilan default, saya tidak yakin umask harus ditetapkan sebagai bagian dari inisialisasi X, bahkan jika saya masih menggunakannya sendiri.
/etc/Xsession.d
, atau file lain di/etc/pam.d
(Saya berasumsi Anda ingin mengatur seluruh sistem ini). Atau mungkin/etc/login.defs
.tty
ataussh
masuk, dan mereka pada dasarnya sama, sungguh (menggunakanpam_umask
). Mereka tidak bekerja dengan sesi gnome saya. Jadi saya tidak bisa memberikan hadiah kepada siapa pun. Saya tidak tahu apakah ini khusus untuk gnome di Xorg di archlinux. Saya akan menguji dengan distribusi lain ketika saya punya waktu.Jawaban:
Beberapa aplikasi Gnome diluncurkan oleh
systemd --user
, dalam hal ini umask diatur oleh systemd untuk0022
terlepas dari nilai yang dikonfigurasi untuk pam_umask . Saya tidak mengetahui adanya solusi, tetapi saya membuka masalah pada systemd github masalah pelacak. Masalah ini juga dilaporkan di Gnome bugzilla .Penggunaan Umask diatur
pam_umask
berfungsi seperti yang diharapkan untuk aplikasi yang tidak diluncurkan olehsystemd --user
.Satu solusi disarankan pada Ubuntu bugzilla untuk menempatkan penggantian layanan systemd ke semua aplikasi yang terpengaruh.
Untuk menyelidiki ini sendiri
Anda dapat membuat daftar proses yang berjalan di sistem Anda dalam format pohon (proses induk / anak) menggunakan:
Temukan PID untuk: (1) instance systemd --user sesi Anda ; (2) aplikasi yang diluncurkan olehnya , seperti gedit, yang akan ditampilkan sebagai proses anak ke systemd --user ; dan (3) proses di sesi Anda tidak diluncurkan oleh systemd --user .
Bandingkan payung yang dilaporkan dalam proksi :
systemd --user itu sendiri (1) dan proses yang tidak diluncurkan olehnya (3) harus memiliki umask yang benar yang ditetapkan oleh pam_umask . Proses yang diluncurkan oleh systemd --user (2) akan memiliki umask dari
0022
.sumber
Masalahnya adalah yang disebutkan oleh Sebasth. Saya mencoba banyak hal, tetapi kemudian saya menemukan solusi yang terdiri dari menimpa UMask (per-pengguna) dari dbus:
Dalam file yang dibuka, cukup tulis:
File akan disimpan dalam .config / systemd / user / dbus.service.d / override.conf dan menimpa umask default dbus, yang saya anggap diwarisi dari systemd --user, karena dbus diluncurkan olehnya. Cukup keluar dan masuk lagi dan aplikasi gnome harus menggunakan umask yang ditentukan. Hanya solusi, tetapi berhasil untuk saya.
sumber
Alih-alih mengubah
umask
Anda bisa menggunakanusergroups
opsi untukpam_umask
, dengan pengguna dan grup ini memiliki izin yang sama, seperti cara unix klasik untuk berbagi folder.sumber
Untuk mengatur umask default sistem Anda harus mengaktifkannya, yang dijelaskan di sini:
Tautan di atas adalah untuk debian dan ubuntu tetapi sama untuk semua sistem linux lainnya.
Untuk mengaktifkannya umask (yang mungkin sudah ada di tempat) Anda perlu menambahkan baris ke
/etc/pam.d/common-session
:Setelah diaktifkan, Anda dapat mengaturnya di:
Saya melihat Anda sudah menemukan file ini sehingga yang perlu Anda lakukan hanyalah mengatur:
Dan aturlah UMASK ke 0002 atau apa pun yang Anda inginkan.
Ini akan mengatur seluruh nilai default sistem, yang berarti semua pengguna akan mengambil umask dari sana kecuali mereka tidak secara khusus mengatur lain di .profile atau .bashrc mereka
sumber
common-*
untuk pengaturan umum. Arch, seperti RedHat, menggunakansystem-auth
file untuk ini. Lagi pula, saya mencoba saran Anda untuk menambahkansession optional pam_umask.so
danUMASK 002
ke/etc/login.defs
Seperti yang saya harapkan, dan seperti halnyapam_umask.so umask=0002
, itu berhasil untuklogin
sesi tty (atau melalui SSH) tetapi Gnome menetapkan0022
umask seperti biasa. Gnome harus menggunakan pengaturan umask internal, atau archlinux menggunakan ... Saya akan mencoba distribusi lain untuk melihat apakah masalah muncul juga.Untuk sesi login: tambahkan
umask 0002
ke$HOME/.profile
(atau/etc/profile
) Anda.Untuk sesi Gnome: tambahkan
umask 0002
ke$HOME/.gnomerc
sumber
EDIT: Untuk mendapatkan systemd untuk mengatur umask sesi gnome, saya membuat file umask.conf di bawah /etc/systemd/system/display-manager.service.d/ dengan baris berikut:
Setelah me-reboot mesin, ini sekarang memungkinkan semua proses di bawah
user.slice
untuk menyesuaikan dengan umask yang Anda inginkan. Keluar tidak cukup untuk perubahan terjadi sehingga saya akan menyarankan untuk me-reboot mesin Anda sebelum melakukan tes pada proses umasks. Info Tambahan:
sumber
/etc/systemd/system/gdm.service.d/umask.conf
mengandung hanya[Service]\nUMask=0002
cukup.Hanya ingin menambahkan bahwa halaman
pam_umask
manual memberikan beberapa informasi yang cukup bagus untuk membantu Anda mengetahui dari mana umask Anda berasal. Secara khusus:Seperti yang dinyatakan seseorang, Anda harus mengatur ini di
common-session
file di direktori/etc/pam.d
.Perhatikan bahwa login yang tidak menggunakan pam (seperti yang menggunakan
getty
ataulogin
akan mengatur umask merekalogin.defs
.sumber
Pada pemasangan Fedora 29 dengan Gnome saya menemukan bahwa, program yang diluncurkan dari peluncur Gnome meninggalkan file lain yang dapat dibaca, 0022. Pam tampaknya mengurung ke /etc/login.defs seperti yang disebutkan di atas. Namun, mengedit topeng di sana, 0077, tidak mengubah perilaku Gnome. Saya juga harus mengedit / etc / profile, dan ke / etc / bashrc - keduanya mengaturnya kembali ke 0022.
Akan lebih baik jika Fedora memiliki satu tempat untuk ini, tetapi entri di / etc / profile dan / etc / bashrc menetapkan mask berbeda untuk pengguna dengan ID di atas atau di bawah 200, jadi sepertinya satu mask tidak cocok untuk semua.
Meskipun ini adalah perbaikan untuk saat ini, masalahnya tidak sepenuhnya terpecahkan, karena pengguna gnome masih tidak memiliki cara untuk mengatur umasknya sendiri karena diterapkan pada aplikasi yang dijalankan dari peluncur gnome. Sepertinya Gnome harus memiliki opsi konfigurasi untuk umask itu. (Mungkin iya, tapi saya tidak menemukannya.)
sumber
Saya punya solusinya setidaknya pada Fedora 31:
sumber