Linux altındaki tüm kullanıcılar için umask nasıl kontrol edilir?


18

AIX altında aşağıdakileri umaskyapan tüm kullanıcıları kontrol edebilirim :

cut -d : -f 1 /etc/passwd | while read ONELINE; do lsuser -a umask "$ONELINE"; done

Ancak, umaskayarları Linux altındaki tüm kullanıcılar için nasıl kontrol edebilirim ? ( suher kullanıcıya ve sonra umaskkomutuna? Daha iyi bir yolu var mı?)

UPDATE1:

suTüm kullanıcılar için en iyisi değildir , çünkü bazı RHEL sunucularında birkaç kullanıcı için varsayılan kabuk dur / kapanır.

shutdown:x:6:0:shutdown;asdf;asdf;F:/sbin:/sbin/shutdown

öyleyse ben sukullanıcıya ... o zaman sunucu kapanır?

GÜNCELLEME2: Su tabanlı olmayan bir cevap için bir ödül yarattım.


Sistem kullanıcısını önlemek için daha önce bahsetmiştim (3 $> 500), UID 500'ün üzerinde kontrol anlamına gelir
Rahul Patil

tekrar: Sistem kullanıcıları hariç tüm kullanıcılar için
umask'ı

geçerli kabuğu kontrol edebiliriz, ne düşünüyorsun? , kabuk / bin / bash öğesinden başka bir deyişle, o kullanıcıyı atlayabiliriz. değil mi?
Rahul Patil

Yanıtlar:


9

Şunları kullanarak kontrol edebilirsiniz:

for user in $(awk -F: '{print $1}' /etc/passwd); 
do 
    printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done

Sistem kullanıcısını kontrol etmekten kaçınmak için şunları yapın:

for user in $(awk -F: '( $3 >= 500 ){print $1}' /etc/passwd); 
do 
    printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done

Çıktı:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

1
tamam, teşekkürler, ama kullanıcıya "su" olmadan umask kontrol etmek için herhangi bir yolu var mı?
gasko peter

manuel olarak ayarladıysanız, diyelim ki ~.bashrcbu dosyaya girebilirsiniz.
Rahul Patil

Birçok yerde kurulabilir ... bu yüzden grepping en iyi çözüm değildir
gasko peter

o zaman birçok yerde kontrol etmeliyiz
Rahul Patil

ortak dosyada kullanıcı başına umask ayarladıysanız daha iyi olmalıdır. Örn .bashrc
Rahul Patil

10

Bu umaskgenellikle sistem genelinde config dosyası üzerinden ayarlanır /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Bu değer geçersiz kılınan olabilir ama genellikle ya aracılığıyla değil edebilir /etc/bashrc, /etc/profileve / veya bunların kullanıcılar tarafından $HOME/.bashrc(onlar Bash kullandığınız varsayarak).

Eğer grepbu anılan dosyalarda "Umask" için de RHEL kutuları bu fark edeceksiniz:

$ grep umask /etc/bashrc /etc/profile
/etc/bashrc:    # By default, we want umask to get set. This sets it for non-login shell.
/etc/bashrc:       umask 002
/etc/bashrc:       umask 022
/etc/profile:# By default, we want umask to get set. This sets it for login shell
/etc/profile:    umask 002
/etc/profile:    umask 022

Daha derin kazmak:

  • /etc/bashrc

    # By default, we want umask to get set. This sets it for non-login shell.
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 022
    fi
    
  • /etc/profile

    # By default, we want umask to get set. This sets it for login shell
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002
    else
        umask 022
    fi
    

Yani en azından RHEL sistemlerinde umaskya 002UID'niz 199'dan büyükse ya 022da (sistem hesapları).


Ubuntu ve (muhtemelen) Debian tabanlı sistemler için, ~/.profilevarsayılan değeri kullanıcı başına görebilmeniz ve değiştirebilmeniz için dosyanın üst kısmında yorumlanmış olan bunu yapmanız gerekir .
code_dredd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.