Bagaimana cara memeriksa umask untuk semua pengguna di Linux?


18

Di bawah AIX saya dapat memeriksa umaskuntuk semua pengguna dengan:

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

Tetapi bagaimana saya bisa memeriksa umaskpengaturan untuk semua pengguna di Linux? ( suuntuk setiap pengguna lalu umaskperintah? Apakah ada cara yang lebih baik untuk itu?)

UPDATE1:

Ini bukan yang terbaik untuk susemua pengguna, karena pada beberapa server RHEL shell default untuk beberapa pengguna dihentikan / ditutup ..:

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

jadi jika saya suke pengguna ... maka server dimatikan?

UPDATE2: Saya membuat hadiah untuk jawaban non-su.


Saya telah menyebutkan untuk menghindari pengguna sistem ($ 3> 500), berarti memeriksa di atas UID 500
Rahul Patil

lagi: Saya perlu memeriksa umask untuk semua pengguna, tidak termasuk pengguna sistem :)
gasko peter

kami dapat memeriksa shell yang valid, bagaimana menurut Anda? , artinya jika shell adalah yang lain / bin / bash, maka kita dapat melewati pengguna itu. bukan?
Rahul Patil

Jawaban:


9

Anda dapat memeriksa menggunakan:

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

Untuk menghindari memeriksa pengguna sistem lakukan:

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

Keluaran:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

1
ok, terima kasih, tetapi adakah cara untuk memeriksa umask tanpa "su" kepada pengguna?
gasko peter

jika Anda telah menetapkan secara manual, katakan di ~.bashrckemudian Anda dapat masuk ke file ini.
Rahul Patil

Itu dapat diatur di banyak tempat ... itu sebabnya grepping bukan solusi terbaik
gasko peter

maka kita harus memeriksa di banyak tempat
Rahul Patil

seharusnya lebih baik, jika Anda telah menetapkan umask di per pengguna dalam file umum misalnya .bashrc
Rahul Patil

10

The umaskbiasanya sistem yang luas diatur melalui file konfigurasi: /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Nilai ini dapat diganti tetapi biasanya tidak melalui salah satu /etc/bashrc, /etc/profiledan / atau oleh pengguna di $HOME/.bashrc(anggap mereka menggunakan Bash).

Jika Anda grepuntuk "umask" di file-file tersebut Anda juga akan melihat ini di kotak RHEL:

$ 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

Menggali lebih dalam:

  • /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
    

Jadi setidaknya pada sistem RHEL umaskadalah apakah 002jika UID Anda lebih besar dari 199, dan 022sebaliknya (akun sistem).


Untuk Ubuntu dan (mungkin) sistem berbasis Debian, Anda harus melakukan ini ~/.profile, yang memiliki nilai default yang dikomentari di bagian atas file untuk Anda batalkan komentar dan modifikasi pada basis per pengguna.
code_dredd
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.