2011-10-27 22 views
19

Estoy tratando de comprobar si un archivo tiene el bit de ejecución establecido para el propietario en el script bash.Comprobando los permisos del propietario del archivo

if [ -x filename ] comprueba el permiso de ejecución para el usuario que ejecuta la declaración, pero necesito saber si el propietario lo tiene. ¿Hay alguna manera de especificar el propietario?

Respuesta

34

Puede usar stat para obtener los permisos del archivo y analizarlos con otro comando para obtener el carácter que desea.

stat -c %A someFile 

devoluciones algo como:

-rw-rw-r-- 

EDIT: Aquí van:

stat -c %A someFile | sed 's/...\(.\).\+/\1/' 

devuelve o - o x si el propietario tiene ejecutar.

EDIT 2: Por el amor de finalización:

if [ `stat -c %A someFile | sed 's/...\(.\).\+/\1/'` == "x" ] 
then 
    echo "Owner has execute permission!" 
fi 
+1

funcionó muy bien. Gracias – aport002

+14

si [$ (stat -c% a some-file)! = 600]; entonces ... era lo que quería. –

+3

'% a' es un gran formato. Una forma más sencilla de recuperar el 4º carácter es 'stat -c% A someFile | corte -c4'. –

Cuestiones relacionadas