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


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

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

Ответы:


20

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

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

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

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


1
Обратите внимание, что statэто характерно для современных систем Linux, другие единицы могут иметь другое statили не иметь вообще. Синтаксический анализ ls обычно является причиной неприятностей , но синтаксический анализ владельца, поскольку третье слово в основном работает (после этого все рушится); это все еще не идеально (некоторые системы допускают пробелы в именах пользователей).
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.