Запись разрешений внутри сценария оболочки

Как проверить, что пользователь имеет право на запись в каталог, имя каталога передается как аргумент командной строки.

  • пытаясь передать несколько строк, один за другим (каждая строка имеет 3 элемента, разделенных пробелом), поданных в уже написанный скрипт
  • объявление переменной не работает
  • Как перемещать файлы с конкретными расширениями во вновь созданные каталоги
  • сравнить два поля в двух разных файлах
  • Хранить задержанный вывод оболочки в переменную?
  • получение неожиданной ошибки EOF
  • Как удалить лишний «мусор» из этого файла журнала?
  • Как использовать параметры pass-in для сценария оболочки?
  • 2 Solutions collect form web for “Запись разрешений внутри сценария оболочки”

    Ответ от @SHW не является хорошей идеей, и в некоторых случаях он возвращает неверные результаты.

    Пожалуйста, просто используйте команду test (или это [ alias):

     if [ -w "$dirname" ]; then echo "$dirname is writable" fi 

    так как test команда с его -w тестом не будет проверять UNIX permission bits исторических UNIX permission bits а скорее имеет access(2) вызову access(2) для проверки возможности записи.

    Преимущество использования access(2) заключается в том, что access также включает в себя влияния ACL , которые отсутствуют, если вы просто проверяете традиционные биты разрешения UNIX.

    Простой скрипт, чтобы узнать разрешение на запись

     ls -ld directory | cut -c -10 > temp_perm owner_perm=`cut -c 3 temp_perm` group_perm=`cut -c 6 temp_perm` other_perm=`cut -c 9 temp_perm` [ "$owner_perm" -eq "w" ] && echo "Owner have write permission" [ "$group_perm" -eq "w" ] && echo "Group have write permission" [ "$other_perm" -eq "w" ] && echo "Other have write permission" 
    Linux и Unix - лучшая ОС в мире.