Какова команда поиска разрешений на чтение и запись для одного файла?

Я знаю, что ls -l перечисляет разрешения каждого файла в каталоге, но какая команда, если я хочу видеть разрешения только определенного файла?

Чтобы получить всю информацию, предоставленную ls -l для одного файла или папки, используйте параметр -d и укажите файл:

 ls -ld filename 

Чтобы просто получить режим:

 stat -c %a file 

(где file также может быть каталогом).

Примечание: это команда stat из GNU Coreutils. В противном случае решение зависит от системы.

Если вы намерены сделать что-то в зависимости от разрешения файла, то в некоторых случаях вы можете рассмотреть простой test (aka [ или [[ ] условное утверждение:

  • -r файл существует, и разрешение на чтение
  • -w файл существует, и разрешение на запись предоставляется
  • -x существует и выполняется разрешение на выполнение

Например:

 [ -w file ] && echo foo >> file 

Поскольку «разрешения» не просто охватывают октальные разрешения unix для современных Linux-систем, я хотел бы остановиться немного:

Помимо stat -c %a file @ vinc17, для контекста SELinux в RHEL-системах stat -c %a file stat -c %C file getfacl file для томов с использованием ACL.

namei -m /path/to/file может оказаться полезным для определения всех восьмиступенчатых разрешений, ведущих путь к файлу, поскольку неправильные разрешения для родительских каталогов могут препятствовать доступу.