Làm cách nào để kiểm tra umask cho tất cả người dùng trong Linux?


18

Trong AIX tôi có thể kiểm tra umasktất cả người dùng với:

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

Nhưng làm cách nào tôi có thể kiểm tra umaskcài đặt cho tất cả người dùng trong Linux? ( sucho mọi người dùng và sau đó ra umasklệnh? Có cách nào tốt hơn cho nó không?)

CẬP NHẬT1:

Nó không phải là tốt nhất cho sutất cả người dùng, bởi vì trên một số máy chủ của RHEL, lớp vỏ mặc định cho một vài người dùng bị tạm dừng / tắt máy ..:

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

Vì vậy, nếu tôi sucho người dùng ... sau đó máy chủ tắt?

CẬP NHẬT2: Tôi đã tạo tiền thưởng cho câu trả lời không dựa trên su.


Tôi đã đề cập để tránh người dùng hệ thống ($ 3> 500), có nghĩa là kiểm tra trên UID 500
Rahul Patil

một lần nữa: Tôi cần kiểm tra umask cho tất cả người dùng, không loại trừ người dùng hệ thống :)
gasko peter

Chúng tôi có thể kiểm tra vỏ hợp lệ, bạn nghĩ gì? , có nghĩa là nếu shell khác / bin / bash, thì chúng ta có thể bỏ qua người dùng đó. phải không
Rahul Patil

Câu trả lời:


9

Bạn có thể kiểm tra bằng cách sử dụng:

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

Để tránh kiểm tra người dùng hệ thống làm:

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

Ra ngoài:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

1
ok, cảm ơn, nhưng có cách nào để kiểm tra ô mà không "su" ing cho người dùng không?
pasko peter

nếu bạn đã thiết lập thủ công, hãy nói ~.bashrcsau đó bạn có thể grep vào tệp này.
Rahul Patil

Nó có thể được đặt ở nhiều nơi ... đó là lý do tại sao grepping không phải là giải pháp tốt nhất
gasko peter

sau đó chúng tôi phải kiểm tra ở nhiều nơi
Rahul Patil

nó sẽ tốt hơn, nếu bạn đã đặt umask cho mỗi người dùng trong tệp chung, ví dụ: .bashrc
Rahul Patil

10

Các umaskthường thiết lập hệ thống rộng thông qua các tập tin cấu hình: /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Giá trị này có thể bị ghi đè nhưng thường không thông qua /etc/bashrc, /etc/profilevà / hoặc bởi người dùng trong $HOME/.bashrc(Giả sử họ đang sử dụng Bash).

Nếu bạn grepcho "umask" trong các tệp đã nói ở trên, bạn cũng sẽ nhận thấy điều này trên các hộp 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

Đào sâu hơn:

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

Vì vậy, ít nhất trên hệ thống của RHEL umask002nếu UID của bạn lớn hơn 199 và 022nếu không (tài khoản hệ thống).


Đối với Ubuntu và (có thể) các hệ thống dựa trên Debian, bạn nên thực hiện việc này ~/.profile, trong đó có giá trị mặc định được nhận xét ở đầu tệp để bạn bỏ ghi chú và sửa đổi trên cơ sở mỗi người dùng.
code_dredd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.