Probar permisos efectivos de archivo para el usuario

24

¿Es posible probar los permisos efectivos de un archivo para un usuario específico?

Normalmente hago esto su usery luego accedo al archivo, pero ahora quiero probar esto en un usuario sin shell (es decir, un usuario del Sistema)

dtech
fuente

Respuestas:

23

El sudocomando puede ejecutar cualquier cosa como un usuario particular con la -uopción. En lugar de preocuparse por los shells, solo intente cat(o ejecute, lo que sea) su archivo como usuario objetivo:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
ckhan
fuente
catsin embargo, probablemente no sea la mejor opción ... si está probando un archivo grande o un archivo binario ...
Alexis Wilke
24

Encontré conveniente usar en scripts algo como

 sudo -u <user> test -r <file-to-test> && ...
usuario72025
fuente
1
La mejor respuesta, ya que puede probar la lectura (-r), escritura (-w) y ejecutable (-x) sin modificar / crear el archivo. man testpara más detalles
Thomas
12
sudo -u <user> test -r <file-to-test>; echo $?

La echo $?parte mostrará el estado de salida de la prueba.

¡Solo recuerde aquí que la salida será 0si la operación fue exitosa! O no cero, por ejemplo 1, si no.

Al igual que el comentario de @ Thomas en la respuesta de @ user72025, úselo man testpara obtener más pruebas de funcionamiento, como test -xpara probar la test -wejecubilidad, la capacidad de escritura, etc.

Tyler Collier
fuente
1
Para mí, esta es la respuesta más útil. El de user72025 estaba cerca, pero no tenía idea de cuál era el resultado. Lo has dejado claro. Gracias. Votando
inspirado
6

He descubierto que puede usar su -s <shellname> <username>para ingresar un shell específico como usuario específico. Luego puede probar los permisos de los archivos como de costumbre.

P.ej:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
dtech
fuente
Muy interesante opción.
Alex