Як перевірити umask для всіх користувачів під Linux?


18

У програмі AIX я можу перевірити umaskвсіх користувачів на:

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

Але як я можу перевірити umaskналаштування для всіх користувачів під Linux? ( suкожному користувачеві, а потім umaskкомандувати? Чи є кращі способи для цього?)

ОНОВЛЕННЯ1:

Це не найкраще для suвсіх користувачів, оскільки на деяких серверах RHEL оболонка за замовчуванням для кількох користувачів - це зупинка / відключення ..:

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

тож якщо я suкористувачеві ... то сервер вимикається?

UPDATE2: Я створив суму за відповідь, що не ґрунтується на су.


Я вже згадував, щоб уникнути користувачів системи ($ 3> 500), означає перевірити вище UID 500
Rahul Patil

ще раз: мені потрібно перевірити umask для всіх користувачів, не виключаючи користувачів системи :)
gasko peter

ми можемо перевірити наявність дійсної оболонки, що ви думаєте? , означає, що якщо оболонка інша, ніж / bin / bash, ми можемо пропустити цього користувача. чи не так?
Рахул Патіль

Відповіді:


9

Ви можете перевірити, використовуючи:

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

Щоб уникнути перевірки користувача системи:

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

Вихід:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

1
ок, спасибі, але чи є способи перевірити umask без "су" ING?
gasko peter

якщо ви встановили вручну, скажімо, ~.bashrcтоді ви можете скористатися цим файлом.
Рахул Патіль

Це може бути встановлено в багатьох місцях ... ось чому поздоровлення не найкраще рішення
gasko peter

то нам доведеться перевірити багато місця
Рахул Патіль

краще, якщо ви встановили umask для кожного користувача у загальному файлі, наприклад .bashrc
Rahul Patil

10

umaskЗазвичай встановлюються по всій системі через конфігураційний файл: /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Це значення може бути перевизначені , але , як правило , НЕ через або /etc/bashrc, /etc/profileі / або користувачами в їх $HOME/.bashrc(за умови , що вони використовують Bash).

Якщо ви grepвикористовуєте "umask" у цих вищезазначених файлах, ви також помітите це на полях 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

Копати глибше:

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

Так що принаймні для системи RHEL umaskє або 002якщо ваш UID більше 199, 022інакше (системні облікові записи).


Для систем, що базуються на Ubuntu та (можливо) Debian, ви повинні це зробити в ~/.profile, де у верхній частині файлу розміщено значення за замовчуванням, щоб ви могли коментувати та змінювати на основі кожного користувача.
code_dredd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.