Làm cách nào để tìm kiếm tất cả các tệp SUID / SGID?


11

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

1
@Nils: không đúng sự thật. 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 -permtắc. Đọc hướng dẫn sẽ giúp.
0xC0000022L

@ 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 find $FILE -perm /7777để xem liệu bạn findcó làm điều đó hay ngăn chặn nó không.
0xC0000022L

Câu trả lời:


14

Nếu bạn muốn kiểm tra bất kỳ bit nào, hãy sử dụng /. Tức là cho trường hợp sử dụng của bạn:

find "$DIRECTORY" -perm /4000

và:

find "$DIRECTORY" -perm /2000

hoặc kết hợp:

find "$DIRECTORY" -perm /6000

Bạn có thể sử dụng cả thư mục và tệp làm đối số cho GNU find.

Một cách tiếp cận khác, IMO dễ đọc hơn, là sử dụng các phím tắt ghi nhớ. I E:

find "$DIRECTORY" -perm /u=s,g=s

Emptor caveat

Hãy nhớ rằng các biến thể findkhác nhau. Họ cũng có thể cư xử khác nhau. Luôn đọc hướng dẫn thân thiện (RTFM).


7

Bằng cách sử dụng lệnh sau, bạn có thể liệt kê tất cả các nhị phân có quyền SUID. Các -perm -u=slá cờ của findcông cụ hiện các trick:

find / -perm -u=s -type f 2>/dev/null
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.