Tôi sẽ sử dụng cú pháp tìm kiếm gnu cho cờ -perm trong ví dụ này:
Về cơ bản - nếu bạn loại bỏ các tiện ích mở rộng kỳ quặc như ACL, bạn đã có 3 chocies - chủ sở hữu, nhóm và quyền truy cập ghi "khác". Âm thanh như một công việc cho một vòng lặp.
Có rất nhiều chỗ để tối ưu hóa điều này nhưng tôi sẽ để nó cho người khác ... Ngoài ra, tôi không bao giờ có thể nhớ tất cả các chi tiết tìm và vượt qua các hệ thống tập tin và những thứ vô nghĩa đó. Ngoài ra, hãy đảm bảo đầu ra của các nhóm giống như trên hệ thống linux thử nghiệm của tôi
$ groups snoopy
snoopy : snoopy doghouse linus admin wwI woodstock
$
Đây là một ví dụ sơ bộ về cách bạn tìm thấy các tệp có thể ghi được bởi người dùng. Điều này sẽ khi chạy như bất kỳ người dùng nào, nhưng nếu bạn chạy nó với tư cách là người dùng không phải là uid0, bạn sẽ chỉ tìm thấy những thứ trong thư mục mà người dùng đang chạy tập lệnh có cả quyền đọc và thực thi.
#!/bin/sh
user=snoopy
directory=/
# first files owned by the user and writable
find "$directory" -follow -user "$user" -perm /u+w 2> /dev/null
# now for files that are group writable with the user in that group
for groups in $(groups snoopy 2> /dev/null | cut -f2 -d:)
do
find "$directory" -follow -group "$user" -perm /g+w 2> /dev/null
done
# now for everything else
find "$directory" -follow -perm /o+w 2> /dev/null