Определите, есть ли у текущего пользователя разрешение на запись в каталог

9

Я знаю, что вы можете определить владельца каталога, выполнив:

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

Затем вы можете сравнить его с текущим пользователем, выполнив это:

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

Но вы можете иметь права на запись, не будучи владельцем. Как вы это определяете?

Tyilo
источник

Ответы:

20

Я предполагаю

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

должен делать то, что вы хотите.

Кроме того, stat -c %U ~/fooэто лучший способ получить владельца, чем анализ lsрезультатов.

enzotib
источник
1
Обратите внимание, что statэто характерно для современных систем Linux, другие единицы могут иметь другое statили не иметь вообще. Синтаксический анализ ls обычно является причиной неприятностей , но синтаксический анализ владельца, поскольку третье слово в основном работает (после этого все рушится); это все еще не идеально (некоторые системы допускают пробелы в именах пользователей).
Жиль "ТАК - перестань быть злым"