Визначте, чи має поточний користувач дозвіл на запис у каталозі


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.