Verifica le autorizzazioni effettive del file per l'utente


24

È possibile testare le autorizzazioni effettive di un file per un utente specifico?

Normalmente lo faccio su useraccedendo al file, ma ora voglio provarlo su un utente senza shell (cioè un utente di sistema)

Risposte:


23

Il sudocomando può eseguire qualsiasi cosa come un particolare utente con l' -uopzione. Invece di preoccuparti delle shell, prova a cat(o eseguire qualsiasi cosa) il tuo file come utente di destinazione:

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

catprobabilmente non è la scelta migliore ... se stai testando un file di grandi dimensioni o un file binario ...
Alexis Wilke

24

Ho trovato conveniente usare qualcosa di simile negli script

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

1
migliore risposta, in quanto è possibile verificare la leggibilità (-r), scrivibile (-w) ed eseguibile (-x) senza modificare / creare effettivamente il file. man testper maggiori dettagli
Thomas

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

La echo $?parte genererà lo stato di uscita dal test.

Ricorda qui che l'output sarà 0se l'operazione ha avuto successo! O diverso da zero, ad esempio 1, in caso contrario.

Come il commento di @ Thomas sulla risposta di @utente72025, usare man testper ottenere più test operativi, come test -xper testare eseguibilità, test -wscrivibilità, ecc.


1
Per me, questa è la risposta più utile. Quello di user72025 era vicino, ma non avevo idea di quale fosse il risultato. L'hai chiarito. Grazie. Votare.
ispirato il

6

Ho scoperto che puoi usare su -s <shellname> <username>per inserire una shell specifica come utente specifico. È quindi possibile testare le autorizzazioni dei file come al solito.

Per esempio:

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

Opzione molto interessante.
Alex
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.