Tất cả các howtos mà tôi tìm thấy trên web đều nói:
Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print
Nhưng điều đó là không đúng sự thật. Xem:
$ ls -lah test
-r-sr-xr-x 1 user user 0B Jan 24 22:47 test
$
$
$ stat -x test | grep Mode
Mode: (4555/-r-sr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
$
$
$ find test -perm 4000
$ find test -perm 2000
$
Câu hỏi: Vậy sự thật là gì? Làm thế nào tôi thực sự có thể liệt kê tất cả các tệp SUID / SGID?
Uhm, vậy tại sao chính xác điều này là "không đúng sự thật"? Bạn đã làm R ead T he F riendly M anual, phải không? Các bit cho phép của tệp là chế độ chính xác (bát phân hoặc ký hiệu).
—
0xC0000022L
** kiểm tra ** là một tập tin. Tìm kiếm trên các thư mục. Vì vậy, bạn nên sử dụng find trên thư mục nơi kiểm tra cư trú.
—
Nils
@Nils: không đúng sự thật.
—
0xC0000022L
find
(GNU tìm chính xác) sẽ có các thư mục và tệp giống nhau. Anh ấy / cô ấy chỉ đơn giản là bỏ lỡ điểm của công -perm
tắc. Đọc hướng dẫn sẽ giúp.
@ 0xC0000022L Thú vị. Trang web linux của tôi trên CentOS 5 cho tôi biết nó sẽ chỉ lấy các thư mục. Có nhiều ý nghĩa trong việc chạy nó trên một tập tin?
—
Nils
@Nils: Không có ý nghĩa đặc biệt khi làm điều đó. Nhưng nó sẽ không ngăn cản bạn. Bất kể, thoạt nhìn tôi cũng nghĩ đây là vấn đề. Than ôi, nó không dành cho câu hỏi này. Bạn có thể thử bằng cách kiểm tra một số bit trên một tệp như thế này
—
0xC0000022L
find $FILE -perm /7777
để xem liệu bạn find
có làm điều đó hay ngăn chặn nó không.