Ben kurulum OpenSSH en için bir yol arıyor oldum Umask için 0027
tü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/profile
bilgiyi 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 0027
yapmak 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_config
Aslı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/profile
anlamı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 sftp
kişiliklerinden sonucu ama olması gerektiği gibi değil, ssh hostname
beklendiği okuma gibi çalışır /etc/profile
ve hem scp
ve ssh hostname program
görünüyorlar umask 0022
bir 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, openssh
maverick 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/profile
iç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 yes
sshd_config'inizde var mı?
/etc/profile
. Gibi bir şeyalias umask=/bin/true