จะตรวจสอบ umask สำหรับผู้ใช้ทั้งหมดใน Linux ได้อย่างไร?


18

ภายใต้ AIX ฉันสามารถตรวจสอบumaskผู้ใช้ทั้งหมดด้วย:

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

แต่ฉันจะตรวจสอบการumaskตั้งค่าสำหรับผู้ใช้ทั้งหมดภายใต้ Linux ได้อย่างไร ( suสำหรับผู้ใช้ทุกคนและจากนั้นumaskคำสั่งมีวิธีใดที่ดีกว่าสำหรับมันหรือไม่)

UPDATE1:

ไม่ใช่สิ่งที่ดีที่สุดสำหรับ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 เราสามารถข้ามผู้ใช้นั้นได้ ไม่ใช่เหรอ
ราหุลปาติล

คำตอบ:


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 โดยไม่ต้อง "su" ไอเอ็นจีกับผู้ใช้หรือไม่
gasko peter

ถ้าคุณตั้งค่าด้วยตนเองพูดใน~.bashrcจากนั้นคุณสามารถ grep เป็นไฟล์นี้
ราหุลปาติล

มันอาจจะตั้งอยู่ในหลาย ๆ ที่ ... นั่นเป็นเหตุผลว่าทำไม grepping ไม่ใช่ทางออกที่ดีที่สุด
gasko peter

จากนั้นเราต้องเช็คอินหลายที่
ราหุลปาติล

มันน่าจะดีกว่านี้ถ้าคุณตั้งค่า umask ให้กับผู้ใช้ในไฟล์ทั่วไปเช่น. bashrc
Rahul Patil

10

umaskมักจะมีการตั้งค่าระบบกว้างผ่านไฟล์ config: /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

ค่านี้สามารถแทนที่ แต่โดยทั่วไปแล้วไม่ผ่านทั้ง/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.