Tüm SUID / SGID dosyalarını nasıl arayabilirim?


11

Web'de bulduğum tüm howtos şöyle diyor:

Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print 

Ama bu doğru değil. Görmek:

$ 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
$

Soru: Peki gerçek nedir? Tüm SUID / SGID dosyalarını gerçekten nasıl listeleyebilirim?


Peki neden bu "doğru değil"? Dedin R EAD T o F riendly M , sağ anual? Dosyanın izin bitleri tam olarak moddur (sekizli veya sembolik).
0xC0000022L

** test ** bir dosyadır. Dizinlerdeki aramaları bulun. Bu nedenle testin bulunduğu dizinde find komutunu kullanmalısınız.
Nils

1
@Nils: doğru değil. find(GNU kesin olarak bulur) dizinleri ve dosyaları benzer şekilde alacaktır. Sadece -permanahtarın noktasını kaçırır . Kılavuzu okumak yardımcı olacaktır.
0xC0000022L

@ 0xC0000022L İlginç. CentOS 5'teki linux-man sayfam bana sadece dizinler alacağını söylüyor. Bir dosya üzerinde çalıştırmanın bir anlamı var mı?
Nils

@Nils: hayır, bunu yapmanın belirli bir anlamı yok. Ama o ahmaktan uzak durmayacaksın. Ne olursa olsun, ilk bakışta bunun bir sorun olduğunu düşündüm. Ne yazık ki, bu soru için değil. Bunun gibi bir dosyada bazı bitleri kontrol find $FILE -perm /7777edip findetmediğini veya engelleyip engellemediğini deneyebilirsiniz .
0xC0000022L

Yanıtlar:


14

Bitlerden herhangi birini test etmek istiyorsanız , kullanın /. Yani kullanım durumunuz için:

find "$DIRECTORY" -perm /4000

ve:

find "$DIRECTORY" -perm /2000

veya kombine:

find "$DIRECTORY" -perm /6000

GNU için argüman olarak hem klasörleri hem de dosyaları kullanabilirsiniz find.

Daha iyi okunabilen bir IMO yaklaşımı, anımsatıcı kısayollarını kullanmaktır. yani:

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

Uyarı emptor

Unutmayın, varyantlar finddeğişir. Farklı davranabilirler. Daima kullanım kılavuzunu (RTFM) okuyun.


8

Aşağıdaki komutu kullanarak SUID iznine sahip tüm ikili dosyaları numaralandırabilirsiniz. Aracın -perm -u=sbayrağı findhile yapar:

find / -perm -u=s -type f 2>/dev/null
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.