// Diperbarui 8 Februari - Singkat masalah:
- Bagaimana cara umask direktori berbeda dari file?
- Bagaimana cara umask di Nautilus copy / paste?
- Bagaimana cara mengatur umask untuk SSHFS?
SITUASI KAMI
Beberapa orang dari perusahaan kami masuk ke server dan mengunggah file. Mereka semua harus dapat mengunggah dan menimpa file yang sama. Mereka memiliki nama pengguna yang berbeda, tetapi semuanya adalah bagian dari kelompok yang sama. Namun, ini adalah server internet, sehingga pengguna "lain" harus memiliki (secara umum) akses hanya baca saja. Jadi yang ingin saya miliki adalah izin standar ini:
file: 664
direktori: 771
Tujuan saya adalah bahwa semua pengguna tidak perlu khawatir tentang izin. Server harus dikonfigurasi sedemikian rupa sehingga izin ini berlaku untuk semua file dan direktori, yang baru dibuat, disalin, atau ditulis secara berlebihan. Hanya ketika kami membutuhkan izin khusus, kami akan mengubahnya secara manual.
Kami mengunggah file ke server dengan SFTP-ing di Nautilus, dengan memasang server menggunakan sshfs dan mengaksesnya di Nautilus seolah-olah itu adalah folder lokal, dan dengan SCP-ing di baris perintah. Itu pada dasarnya mencakup situasi kita dan apa yang ingin kita lakukan.
Sekarang, saya telah membaca banyak hal tentang fungsionalitas umask yang indah. Dari apa yang saya mengerti umask (bersama-sama dengan PAM) harus memungkinkan saya untuk melakukan apa yang saya inginkan: menetapkan izin standar untuk file dan direktori baru. Namun, setelah berjam-jam membaca dan mencoba-dan-kesalahan, saya masih tidak mendapatkan ini berfungsi. Saya mendapatkan banyak hasil yang tidak terduga. Saya benar-benar ingin mendapatkan pemahaman yang kuat tentang umask dan memiliki banyak pertanyaan yang belum terjawab. Saya akan memposting pertanyaan-pertanyaan ini di bawah, bersama dengan temuan saya dan penjelasan tentang cobaan saya yang mengarah ke pertanyaan ini. Mengingat banyak hal yang tampaknya salah, saya pikir saya melakukan beberapa hal yang salah. Maka dari itu, ada banyak pertanyaan.
CATATAN: Saya menggunakan Ubuntu 9.10 dan karena itu tidak dapat mengubah sshd_config untuk mengatur umask untuk server SFTP. Menginstal SSH OpenSSH_5.1p1 Debian-6ubuntu2 <diperlukan OpenSSH 5.4p1. Jadi, inilah pertanyaannya.
1. APAKAH SAYA PERLU MENGEMBALIKAN PAM CHANG UNTUK MENGAMBIL EFEK?
Mari kita mulai dengan ini. Ada begitu banyak file yang terlibat dan saya tidak dapat mencari tahu apa yang mempengaruhi dan apa yang tidak mempengaruhi hal-hal, juga karena saya tidak tahu apakah saya harus me-restart seluruh sistem agar perubahan PAM berlaku. Saya melakukannya setelah tidak melihat hasil yang diharapkan, tetapi apakah ini benar-benar diperlukan? Atau bisakah saya keluar dari server dan masuk kembali, dan apakah kebijakan PAM baru harus efektif? Atau adakah program 'PAM' untuk dimuat ulang?
2. APAKAH ADA SATU FILE TUNGGAL UNTUK MENGUBAH BAHWA MEMPENGARUHI SEMUA PENGGUNA UNTUK SEMUA SESI?
Jadi saya akhirnya mengubah file BANYAK, karena saya membaca BANYAK hal yang berbeda. Saya akhirnya mengatur umask dalam file berikut:
~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002
Saya ingin perubahan ini berlaku untuk semua pengguna, jadi semacam perubahan di seluruh sistem akan menjadi yang terbaik. Bisakah itu tercapai?
3. SETELAH SEMUA, HAL UMAS INI, APAKAH BEKERJA?
Jadi setelah mengubah umask ke 0002 di setiap tempat yang memungkinkan, saya menjalankan tes.
------------ SCP -----------
UJI 1:
scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile 100% 4 0.0KB/s 00:00
Mari kita periksa izin:
user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)
UPDATE: diperbaiki dengan HANYA mengatur umask di pam.d / sesi umum (lihat komentar)
--------- SSH ------------
UJI 2:
ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)
-------- SFTP -----------
Nautilus: sftp: // server / home /
Salin dan tempel file baru dari klien ke server (777 pada klien)
UJI 3:
user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)
Buat file baru melalui Nautilus. Periksa izin file di terminal:
UJI 4:
user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders 0 2011-02-05 18:06 newfile (600)
Maksudku ... Apa yang baru saja terjadi di sini ?! Kita harus mendapatkan 644 setiap saat. Alih-alih, saya mendapatkan 711, 777, 600, dan kemudian sekali 644. Dan 644 hanya dicapai saat membuat file kosong baru melalui SSH, yang merupakan skenario paling tidak mungkin.
Jadi saya bertanya, apakah umask / pam berhasil?
UPDATE: tes tetap 4 dengan HANYA mengatur umask di pam.d / sesi umum (lihat komentar)
4. BEGITU APA ARTINYA UNTUK UMASK SSHFS?
Terkadang kami memasang server secara lokal, menggunakan sshfs. Sangat berguna. Tetapi sekali lagi, kami memiliki masalah izin.
Inilah cara kami memasang:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
CATATAN: kami menggunakan umask = 113 karena rupanya, sshfs dimulai dari 777 bukannya 666, jadi dengan 113 kita mendapatkan 664 yang merupakan izin file yang diinginkan.
Tapi yang sekarang terjadi adalah kita melihat semua file dan direktori seolah-olah mereka 664. Kita telusuri di Nautilus ke / mnt dan:
- Klik kanan -> File Baru (file baru) --- TEST 5
- Klik kanan -> Folder Baru (folder baru) --- TEST 6
- Salin dan tempel file 777 dari klien lokal kami --- TEST 7
Jadi mari kita periksa pada baris perintah:
user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007 3 Feb 5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007 0 Feb 5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb 5 18:15 newfolder (664)
Tapi hei, mari kita periksa folder yang sama ini di sisi server:
user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders 0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)
Apa?! Izin file NYATA sangat berbeda dari yang kita lihat di Nautilus. Jadi apakah umask ini di sshfs hanya membuat 'filter' yang menunjukkan izin file yang tidak nyata? Dan saya mencoba untuk membuka file dari pengguna lain tetapi grup yang sama yang memiliki 600 izin nyata tetapi 644 izin 'palsu', dan saya masih tidak bisa membaca ini, jadi apa gunanya filter ini ??
5. UMASK ADALAH SEMUA TENTANG FILES. TAPI APA TENTANG DIREKTUR?
Dari pengujian saya, saya dapat melihat bahwa umask yang sedang diterapkan juga memengaruhi izin direktori. Namun, saya ingin file saya menjadi 664 (002) dan direktori saya menjadi 771 (006). Jadi mungkinkah memiliki umask yang berbeda untuk direktori?
6. MUNGKIN UMASK / PAM BENAR-BENAR KEREN, TETAPI UBUNTU HANYA BUGGI?
Di satu sisi, saya telah membaca topik orang yang telah sukses dengan PAM / UMASK dan Ubuntu. Di sisi lain, saya telah menemukan banyak bug yang lebih tua dan lebih baru mengenai umask / PAM / fuse di Ubuntu:
- https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/241198
- https://bugs.launchpad.net/ubuntu/+source/fuse/+bug/239792
- https://bugs.launchpad.net/ubuntu/+source/pam/+bug/253096
- https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/549172
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314796
Jadi saya tidak tahu harus percaya apa lagi. Haruskah saya menyerah? Apakah ACL akan menyelesaikan semua masalah saya? Atau apakah saya memiliki masalah lagi menggunakan Ubuntu?
Satu kata peringatan dengan cadangan menggunakan tar. Distribusi Red Hat / Centos mendukung ACL dalam program tar tetapi Ubuntu tidak mendukung ACL saat membuat cadangan. Ini berarti bahwa semua ACL akan hilang ketika Anda membuat cadangan.
Saya sangat ingin meningkatkan ke Ubuntu 10,04 jika itu akan menyelesaikan masalah saya juga, tetapi pertama-tama saya ingin memahami apa yang terjadi.