Mengapa file di dir rumah saya dibuat sebagai yang dapat ditulis oleh dunia meskipun umask lebih ketat?


10

Saya menyadari bahwa izin untuk file dan direktori baru berperilaku agak aneh. Pertama-tama, umask tampaknya mengembalikan jawaban yang benar:

$ umask
0002

Ini berarti akses penuh untuk pengguna saya dan grup saya, tidak ada akses tulis untuk seluruh dunia, tidak ada suid. Tetapi jika saya membuat file di $ HOME saya, beginilah tampilannya:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

yaitu, memberikan akses tulis kepada semua orang. Hal yang sama terjadi dengan direktori:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

Saya pikir ini sama dengan memiliki umask 0000, bukan 0002. Saya telah mencari semua / etc untuk beberapa contoh umask yang mengubah standar 0002 atau 0022, tetapi tidak menemukannya. Ini adalah instalasi standar CentOS 5.5. Ada petunjuk mengapa ini terjadi?


3
Apa jenis sistem file direktori home Anda?
mattdm

4
Dan bagaimana Anda menciptakan testfiledan testdir?
mattdm

3
@mattdm, Anda benar untuk bersikeras: itu XFS. Saya lupa kami memiliki volume terpisah untuk / home, / var dan beberapa lainnya. Meskipun saya sering menggunakan XFS dan belum melihat perilaku ini. Bagaimana ini bisa berhubungan?
rsuarez

2
acl dapat mengganti umask secara lokal. Apakah mungkin direktori Anda sedang di-mount dengan acl?
Faheem Mitha

3
Hmm, rupanya xfs selalu memiliki acl diaktifkan. jadi mungkin tidak ditampilkan di / etc / fstab Anda. Coba jalankan getfacl di partisi / direktori Anda.
Faheem Mitha

Jawaban:


3

Saya tidak tahu apakah pantas untuk menjawab pertanyaan saya sendiri. Editor, tolong, beri saran tentang ini jika ini bukan masalahnya. Terima kasih sebelumnya.

Saya pikir saya telah memecahkan misteri ini: masalahnya adalah kurangnya ACL default pada volume XFS. Inilah entri ACL untuk / srv / backup, salah satu direktori yang terpengaruh:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Setiap kali saya melakukan "mkdir test" atau "touch testfile", itu akan muncul dengan izin 777. Jadi saya melakukan ini:

setfacl -m d:u::rwx /srv/backups

Membiarkan ACL seperti ini:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Sebelumnya ada (seharusnya) tidak ada ACL, tapi sekarang ada. Saya bisa melihat tanda "+" terlampir pada izin ketika saya melakukan "ls-l". Dan secara ajaib, sekarang "uji mkdir" dan "sentuh testfile" berfungsi dengan izin yang diharapkan:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

Saya tidak tahu mengapa ini terjadi. Saya kira XFS tidak suka tidak memiliki ACL default, dan berperilaku aneh ketika itu terjadi. Juga, saya telah melihat ini terjadi hanya di CentOS, bukan di Debian / Ubuntu. Mungkin itu terkait dengan versi XFS di kernel, atau sesuatu seperti itu. Tidak ada ide.

Bagaimanapun, itu menyelesaikan kasus untuk saya. Terima kasih banyak atas semua sarannya :-)


Menjawab pertanyaan Anda sendiri bisa diterima .
Keith Thompson

0

Panggilan creat dapat secara eksplisit menentukan izin yang lebih diutamakan daripada umask.

Anda belum menjawab bagaimana Anda membuat testfile,testdir.

Buat file menggunakan touch testfile, lalu daftarkan dan posting izin


Maaf atas keterlambatannya. Saya melakukan tes menggunakan "touch testfile", dan juga "mkdir testdir", dengan hasil yang sama. umask tampaknya disetel ke "0000", karena mereka dibuat dengan izin 777.
rsuarez

0

Coba getfacl .di direktori yang Anda buat file pengujian Anda, untuk melihat apakah ada acl default yang memengaruhi izin.


1
Tidak, tidak ada ACL default. Tampaknya terkait dengan XFS entah bagaimana, karena hanya terjadi dalam volume XFS. Tapi Terimakasih.
rsuarez

-1

Lihat saja variabel USERGROUPS_ENAB di /etc/login.defs

Mereka berkomentar untuk menonaktifkannya # USERGROUPS_ENAB ya

Jika Anda juga ingin mengubah umask pengguna Anda saat ini, Anda harus terlebih dahulu melakukan prosedur sebelumnya dan mereka melakukan yang berikut.

contoh untuk 027

echo "umask 027" >> ~ / .bashrc && pkill -KILL -u your_username_here

echo "umask 027" >> ~ / .bashrc perintah ini akan menetapkan nilai default umask untuk profil Anda

ini akan memaksa Anda untuk keluar

setelah login lagi

jalankan saja perintah umask lagi dan lihat apakah itu berhasil untuk Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.