Untuk beberapa alasan yang jelas saya perlu menetapkan umask
nilai untuk satu folder tertentu. Bagaimana seseorang bisa melakukan itu?
Terimakasih sebelumnya!
PEMBARUAN 1
Alasan saya perlu menggunakan umask untuk folder tertentu adalah sebagai berikut. Saya memiliki aplikasi web dan ketika itu membuat beberapa file izin default adalah 700. Tapi saya memerlukan setidaknya 755 izin untuk file itu. Saya pikir saya bisa menjelaskan masalahnya dengan lebih jelas sekarang.
permissions
umask
Bakhtiyor
sumber
sumber
Jawaban:
Anda bisa menggunakannya
setfacl
Di mana
name
nama grupUntuk menemukan grup yang Anda atau pengguna tertentu miliki, lihat Di unix / linux bagaimana Anda mengetahui grup apa yang diberikan pengguna melalui baris perintah?
sumber
setfacl
sudah berubah. Saya menerima pesan kesalahan yang-m
bukan pilihan yang valid.setfacl
tidak berubah. Kemungkinan besar Anda belum memberikan nama grup yang tepat (setelah-m
).setfacl
untuk daftar kontrol akses dan bukanumask
. Solusi yang lebih baik tetapi tidak benar-benar apa yang diminta, saya tidak berpikir.sudo setfacl -Rdm ...
(Abaikan R untuk rekursi) harus bekerja. @ Wyatt8740 (benar). Untuk menjalankan tertentu:,man setfacl
dan ketik/-modify
. Anda harus menggunakansudo
.Anda tidak dapat menetapkan umask per direktori, ini adalah nilai tingkat proses. Jika Anda perlu mencegah orang lain membaca file di direktori, cabut bit izin yang sesuai.
Misalnya, jika Anda memiliki direktori
/home/user/directory
dengan beberapa file dan direktori yang bisa mendapatkan izin seperti 777 dari suatu proses, atur bit izin/home/user/directory
menjadi sekitar 700. Itu akan membuat mustahil bagi pengguna lain (tidak termasuk root superuser) untuk turun di/home/user/directory
.Saya paranoid dan mengatur izin
/home/user
ke 750, jadi hanya saya yang bisa membaca, menulis, dan turun di direktori home saya. Ini memiliki konsekuensi bahwa folder seperti/home/user/Public
tidak dapat diakses oleh orang lain, tetapi saya bisa hidup dengan itu.Per pembaruan pertanyaan Anda: masih, Anda tidak dapat mengontrolnya di sistem file (selain menggunakan jenis sistem file yang berbeda seperti FAT yang sangat tidak jelas), Anda perlu melakukannya di aplikasi web Anda. Jika aplikasi web Anda dikodekan dalam PHP, Anda dapat mengubah umask on the fly menggunakan
umask
fungsi:Anda bisa meletakkan ini di file konfigurasi, seperti file yang berisi kata sandi koneksi database (berpikir di aplikasi seperti Wordpress).
Ingat bahwa ini adalah nilai proses, beberapa server web memungkinkan Anda untuk mengaturnya dalam file konfigurasi mereka, jika tidak, Anda dapat memodifikasi skrip startup untuk mengatur umask yang diinginkan. Ingatlah bahwa izin suka
755
dan644
cukup berbahaya untuk webapps, jika kodenya sensitif, semua orang bisa membacanya.sumber
/home/user/Public
(mount -o bind /home/user/Public /some/other/place
) untuk bekerja di sekitar masalah izin direktori induk.Untuk mengubah izin untuk suatu folder gunakan chmod. umask untuk file.Tetapkan umask sesuai kebutuhan Anda
dan ubah kembali setelah selesai
sumber
umask
). Maaf telah menambahkan informasi yang membingungkan.Solusi lain mungkin hanya dengan mengatur id grup pada file yang dibuat dalam direktori, yang membuat file baru dimiliki oleh id grup direktori, bukan id grup pengguna yang membuat file. Jadi saya pikir Anda bisa melakukan:
chown www-data:www-data /my/folder
chmod 4755 /my/folder
Ini menetapkan izin file khusus setgid, yang akan menyebabkan semua file yang dibuat
/my/folder
dimiliki olehwww-data
grup, yang kemudian memiliki izin rx (5) karena direktori induk.sumber
Memberikan solusi anther diimplementasikan dengan kait dan shell
direnv
. Solusi berikut mungkin lebih kompatibel jikasetfacl
tidak tersedia di sistem Anda. (mis. macOS)Gunakan
.envrc
untuk nilaiexport
khususumask
untuk dir tertentu, danexport
ed env var akan diturunkan ketika Anda meninggalkan dir itu.Tentukan kail untuk mengubah
umask
nilai begitu dir bekerja berubah.Untuk saat ini, inisialisasi hook direnv untuk zsh tidak mendukung
chpwd
hook. Jika permintaan tarik GH-514 belum digabung saat Anda melihat halaman ini. Silakan komentar keluareval "$(direnv hook zsh)"
dan hookdirenv
dichpwd
manual dengan kode berikut,Sumber: dynamic-umask-based-on-cwd.md
sumber
Terkait, tetapi mungkin tidak berlaku dalam kasus ini, klip berikut berasal dari
.zshrc
:Jadi untuk penggunaan interaktif, sesuatu seperti itu akan berhasil (tapi, jelas, tidak memberikan keamanan).
sumber