Determinar se o usuário atual tem permissão de gravação em um diretório

9

Eu sei que você pode determinar o proprietário do diretório fazendo:

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

Você pode compará-lo ao usuário atual fazendo o seguinte:

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

Mas você pode ter permissões para escrever sem ser o proprietário. Como você determina isso?

Tyilo
fonte

Respostas:

20

Eu suponho

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

deve fazer o que quiser.

Além disso, stat -c %U ~/fooé uma maneira melhor de obter o proprietário do que analisar a lssaída.

enzotib
fonte
11
Observe que, como staté específico dos sistemas Linux modernos, outros departamentos podem ter um diferente statou nenhum. Analisar ls geralmente é receita para problemas , mas analisar o proprietário como a terceira palavra geralmente funciona (as coisas quebram depois); ainda não é perfeito (alguns sistemas permitem espaços nos nomes de usuário).
Gilles 'SO- stop be evil' (