Xác định xem người dùng hiện tại có quyền ghi trong thư mục không


9

Tôi biết bạn có thể xác định chủ sở hữu của thư mục bằng cách thực hiện:

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

Sau đó, bạn có thể so sánh nó với người dùng hiện tại bằng cách này:

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

Nhưng bạn có thể có quyền viết mà không phải là chủ sở hữu. Làm thế nào để bạn xác định điều này?

Câu trả lời:


20

tôi giả sử

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

nên làm những gì bạn muốn

Ngoài ra, stat -c %U ~/foolà một cách tốt hơn để có được chủ sở hữu hơn là phân tích cú pháp lsđầu ra.


1
Lưu ý rằng statdành riêng cho các hệ thống Linux hiện đại, các đơn vị khác có thể có sự khác biệt stathoặc không có gì cả. Phân tích cú pháp ls thường là công thức cho rắc rối , nhưng phân tích cú pháp của chủ sở hữu vì từ thứ ba chủ yếu hoạt động (mọi thứ bị phá vỡ sau đó); nó vẫn chưa hoàn hảo (một số hệ thống cho phép khoảng trắng trong tên người dùng).
Gilles 'SO- ngừng trở nên xấu xa'
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.