ตรวจสอบว่าผู้ใช้ปัจจุบันมีสิทธิ์เขียนในไดเรกทอรี


9

ฉันรู้ว่าคุณสามารถกำหนดเจ้าของไดเรกทอรีโดยทำ:

ls -ld ~/foo | awk '{ print $3 }'

จากนั้นคุณสามารถเปรียบเทียบกับผู้ใช้ปัจจุบันโดยทำสิ่งนี้:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

แต่คุณสามารถมีสิทธิ์เขียนโดยไม่ต้องเป็นเจ้าของ คุณทราบได้อย่างไร

คำตอบ:


20

ฉันคิดว่า

if [ -w ~/foo ]; then ....

ควรทำสิ่งที่คุณต้องการ

นอกจากนี้ยังstat -c %U ~/fooเป็นวิธีที่ดีกว่าที่จะได้รับเจ้าของกว่าแยกวิเคราะห์lsผลลัพธ์


1
โปรดทราบว่าstatเฉพาะกับระบบ Linux ที่ทันสมัย, unices อื่น ๆ อาจมีความแตกต่างstatหรือไม่มีเลย การแยกคำ ls มักเป็นสูตรสำหรับปัญหาแต่การแยกเจ้าของเป็นคำที่สามส่วนใหญ่ใช้งาน (สิ่งที่ทำลายลงในภายหลัง); มันยังไม่สมบูรณ์ (บางระบบอนุญาตให้เว้นวรรคในชื่อผู้ใช้)
Gilles 'หยุดชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.