Dosyanın etkin izinlerini kullanıcı için sınama


24

Bir dosyanın etkin izinlerini belirli bir kullanıcı için test etmek mümkün mü?

Normalde bunu yaparak su userve sonra dosyaya erişiyorum, ancak bunu kabuksuz bir kullanıcı üzerinde test etmek istiyorum (yani bir Sistem kullanıcısı)

Yanıtlar:


23

sudoKomut ile belirli bir kullanıcı olarak bir şey çalıştırabilirsiniz -useçeneği. Mermiler hakkında endişelenmek yerine, catdosyanızı hedef kullanıcı olarak kullanmaya çalışın (ya da her neyse).

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied

catMuhtemelen en iyi seçenek olmasa da ... büyük bir dosyayı ya da bir ikili dosyayı test ediyorsunuz ...
Alexis Wilke

24

Komut dosyalarında kullanmak gibi bir şey buldum

 sudo -u <user> test -r <file-to-test> && ...

1
Dosyayı gerçekten değiştirmeden / oluşturmadan okunabilir (-r), yazılabilir (-w) ve çalıştırılabilir (-x) için test edebileceğiniz en iyi yanıt. man testdaha fazla bilgi için
Thomas

12
sudo -u <user> test -r <file-to-test>; echo $?

echo $?Bölüm irade çıktı testinden çıkış durumu.

Sadece 0operasyonun başarılı olması durumunda çıktının olacağını hatırlayın ! Veya sıfır olmayan, örneğin1 değilse.

Gibi Thomas'ın comment @ @ user72025 cevabı üzerine, kullanmak man testgibi daha operasyon testleri almak için test -x, deney executability için test -wYazılabilirlik için vs.


1
Benim için bu en yararlı cevap. User72025 tarafından olan yakındı, ancak sonucun ne olduğu hakkında hiçbir fikrim yoktu. Bunu netleştirdin. Teşekkürler. Oy kullanma
inspirednz

6

su -s <shellname> <username>Belirli bir kullanıcı olarak belirli bir kabuğu girmek için kullanabileceğinizi öğrendim . Daha sonra her zamanki gibi dosya izinlerini test edebilirsiniz.

Örneğin:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template

Çok ilginç bir seçenek.
Alex,
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.