Determinar si el usuario actual tiene permiso de escritura en un directorio

9

Sé que puede determinar el propietario del directorio haciendo:

ls -ld ~/foo | awk '{ print $3 }'

Luego puede compararlo con el usuario actual haciendo esto:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

Pero puede tener permisos para escribir sin ser el propietario. ¿Cómo se determina esto?

Tyilo
fuente

Respuestas:

20

supongo

if [ -w ~/foo ]; then ....

Debes hacer lo que quieras.

Además, stat -c %U ~/fooes una mejor manera de obtener el propietario que analizar la lssalida.

enzotib
fuente
1
Tenga en cuenta que states específico de los sistemas Linux modernos, otros unices pueden tener uno diferente stato ninguno. Analizar ls suele ser una receta para problemas , pero analizar al propietario como la tercera palabra funciona en su mayoría (las cosas se descomponen después); todavía no es perfecto (algunos sistemas permiten espacios en los nombres de usuario).
Gilles 'SO- deja de ser malvado'