Linux에서 모든 사용자의 umask를 확인하는 방법은 무엇입니까?


18

AIX에서는 다음을 사용 umask하여 모든 사용자를 확인할 수 있습니다 .

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

그러나 umaskLinux에서 모든 사용자 의 설정을 어떻게 확인할 수 있습니까? ( su모든 사용자에게 umask명령 한 다음 더 나은 방법이 있습니까?)

업데이트 1 :

su일부 RHEL 서버에서는 일부 사용자의 기본 쉘이 중지 / 종료되기 때문에 모든 사용자에게 최선의 방법은 아닙니다 .. :

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

su사용자에게 문의 하면 서버가 종료됩니까?

UPDATE2 : Su가 아닌 답변에 대한 현상금을 만들었습니다.


나는 이미 않도록 시스템 사용자 ($ 3> 500)에 대해 언급 한 수단이 UID 500 위의 확인
라훌 파틸

다시 : 시스템 사용자를 제외하고 모든 사용자에 대해 umask를 확인해야 합니다 :)
gasko peter

우리는 당신이 생각하는 유효한 쉘을 확인할 수 있습니다. 즉, 쉘이 / bin / bash 이외의 다른 경우 해당 사용자를 건너 뛸 수 있습니다. 그렇지 않습니까?
Rahul Patil

답변:


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
그래, 고맙지 만 사용자에게 "su"하지 않고 umask를 확인하는 방법이 있습니까?
gasko peter

수동으로 설정했다면 ~.bashrc이 파일을 grep 할 수 있습니다.
Rahul Patil

여러 곳에서 설정할 수 있습니다 ... 그래서 grepping이 최고의 솔루션이 아닌 이유
gasko peter

우리는 많은 곳에서 확인해야합니다
Rahul Patil

공통 파일에서 사용자별로 umask를 설정 한 경우 더 좋습니다. 예 : .bashrc
Rahul Patil

10

umask일반적으로 설정 파일을 통해 다양한 시스템을 설정됩니다 /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

이 값은 오버라이드 (override) 할 수 있지만, 일반적으로 하나를하지 수 /etc/bashrc, /etc/profile및 / 또는 자신의 사용자에 의해 $HOME/.bashrc(그들은 배쉬를 사용하는 가정).

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 및 (아마도) 데비안 기반 시스템의 경우이 작업을 수행해야합니다.이 ~/.profile값은 사용자별로 주석 처리를 제거하고 수정할 수 있도록 파일 맨 위에 기본값이 주석으로 표시되어 있습니다.
code_dredd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.