Ben kurulum OpenSSH en için bir yol arıyor oldum Umask için 0027tüm bağlantı türleri arasında tutarlı bir şekilde.
Bağlantı türlerine göre:
- sftp
- scp
- ssh ana bilgisayar adı
- ssh ana bilgisayar adı programı
3. ve 4. arasındaki fark, birincisinin, /etc/profilebilgiyi okumazken genellikle bilgileri okuyan bir kabuk başlatmasıdır .
Ayrıca bu yazıyı okuyarak , OpenSSH'nin yeni sürümlerinde mevcut olan -u seçeneğinin farkında oldum. Ancak bu işe yaramıyor.
Ayrıca /etc/profileşimdi içerdiğini de eklemeliyim umask 0027.
Gidiyor nokta nokta:
- sftp - Burada belirtildiği gibi ayar
-u 0027yapmak yeterli değildir.sshd_config
Bu parametreyi ayarlamazsam, sftp varsayılan olarak kullanır umask 0022. Bu, iki dosya varsa, yani:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Onları hedef makineye koymak için sftp kullandığımda aslında alıyorum:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
Ancak ayarladığınızda -u 0027üzerinde sshd_configAslında olsun hedef makinenin:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
olması beklenmiyor, çünkü olması gerektiği gibi:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
Bunun neden olduğunu anlayan var mı?
scp - sftp'nin ayarlarından bağımsız olarak izinler her zaman olur
umask 0022. Şu anda bunun nasıl değiştirileceği hakkında hiçbir fikrim yok.ssh ana bilgisayar adı - burada geçerli kurulum
/etc/profileanlamına gelen kabuk varsayılan olarak okuduğu için sorun yokumask 0027.ssh ana bilgisayar adı programı - scp ile aynı durum .
Özetle, üzerinde izin maskesini ayarlama sftpkişiliklerinden sonucu ama olması gerektiği gibi değil, ssh hostnamebeklendiği okuma gibi çalışır /etc/profileve hem scpve ssh hostname programgörünüyorlar umask 0022bir yerlerde kodlanmış.
Yukarıdaki hususların herhangi birine ilişkin herhangi bir görüş açıktır.
EDIT: Elle openssh derleme gerektiren yamalardan kaçınmak istiyorum. Sistem, opensshmaverick paketleriyle Ubuntu Server 10.04.01 (lucid) LTS kullanıyor .
Cevap: poige tarafından belirtildiği gibi, pam_umask kullanarak numarayı yaptı.
Kesin değişiklikler şunlardı:
Eklenen satırlar /etc/pam.d/sshd:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
Ayrıca, kaynak olup olmadıklarına bakılmaksızın tüm giriş kabuklarını etkilemek /etc/profileiçin aynı satırlara da eklenmiştir /etc/pam.d/login.
EDIT : Bazı yorumlardan sonra bu konuyu tekrar test ettim.
En azından Ubuntu'da (test ettiğim yerde), eğer kullanıcının kabuğunun init dosyalarında (.bashrc, .zshrc, ...) ayarlanmış farklı bir umask varsa, PAM umask'ı yok sayılır ve bunun yerine kullanıcı tanımlı umask kullanılır. Bu değişiklikler /etc/profile, kullanıcı init dosyalarındaki değişiklikleri açıkça belirtmediği sürece sonucu etkilememiştir.
Bu noktada tüm davranışlarda bu davranış olup olmadığı açık değildir.
UsePAM yessshd_config'inizde var mı?
/etc/profile. Gibi bir şeyalias umask=/bin/true