Làm cách nào tôi có thể tìm thấy các tệp và thư mục có thể ghi trên thế giới và thiết lập bit dính?


13

Tôi muốn làm như sau:

  1. Cần tìm tất cả các tập tin và thư mục có thể ghi trên thế giới từ /root.
  2. Nếu tìm thấy, tôi cần kiểm tra xem bit dính có được thiết lập hay không.
  3. Nếu bit dính không được đặt, sau đó đặt nó.

Chúng ta có thể đưa ra một giải pháp dòng lệnh cho loại vấn đề này không?

Câu trả lời:


13

Bạn có thể làm điều này bằng find's -perm -modeđịnh dạng. Từ man find:

-perm -mode

Tất cả các chế độ bit cho phép được đặt cho tệp. Các chế độ tượng trưng được chấp nhận trong hình thức này và đây thường là cách mà chúng tôi muốn sử dụng chúng. Bạn phải chỉ định u',g 'hoặc `o' nếu bạn sử dụng chế độ tượng trưng. Xem phần EXAMPLES để biết một số ví dụ minh họa.

Vì vậy, để tìm tất cả các tệp có thể ghi trên thế giới, bất kể họ có quyền gì khác, bạn có thể làm:

find / -perm -o+w 

Để thiết lập bit dính, sử dụng -exec:

find . -perm -o+w -exec chmod +t {} + 

2
NB: sử dụng find / -not -type l -perm -o+wnếu bạn không muốn đầu ra bao gồm tên của các liên kết tượng trưng.
chb

2

Lệnh này sẽ tìm tất cả các thư mục có thể ghi được trong một lệnh, tôi thấy mình sử dụng nó khá thường xuyên. Đây là lệnh tối ưu! ;) hy vọng nó phục vụ bạn tốt:

find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;
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.