Unix: Как проверить разрешения для определенного каталога?

221

Я знаю, что использование ls -l "directory/directory/filename" сообщает мне права доступа к файлу. Как мне сделать то же самое в каталоге? Я мог бы использовать ls -l в каталоге выше в иерархии, а затем просто прокручивать, пока не найду его, но это такая боль. Если я использую ls -l в фактическом каталоге, он дает разрешения/информацию о файлах внутри него, а не о фактическом каталоге. Я пробовал это в терминале Mac OS X 10.5 и Linux (Ubuntu Gutsy Gibbon), и это тот же результат. Есть ли какой-то флаг, который я должен использовать?

Теги:

7 ответов

323

Вот короткий ответ:

$ ls -ld directory

Вот что он делает:

-d, --directory
    list directory entries instead of contents, and do not dereference symbolic links

Вам может быть интересно manpages. То, что все люди здесь получают от них хорошие ответы.

обратитесь к онлайн-страницам руководства

  • 23
    Я думаю, что страница руководства плохо сформулирована. Я обыскивал его пять раз, прежде чем начал гуглить. Я не хочу, чтобы «записи» каталогов (что-то «входило» в каталоги? Как их файлы и подкаталоги?), Ни их «содержимое» (для меня они звучат как одна и та же концепция), я хочу сами каталоги.
  • 2
    это полностью стандартная терминология, сами каталоги являются записями каталога, т.е. записями в файловой системе
Показать ещё 3 комментария
40

Вы также можете использовать команду stat, если вам нужна подробная информация о файле/каталоге. (Я точно это говорю, как вы говорите, что вы учитесь ^^)

  • 3
    stat покажет вам среди прав доступа: (0755 / drwxr-xr-x)
  • 2
    это удобно, так что вы также можете видеть формат числовых разрешений.
Показать ещё 1 комментарий
9

Существует также

getfacl /directory/directory/

который включает ACL

Хорошее введение в Linux ACL здесь

6

$ls -ld каталог

(ls) указывает список файлов и директорий. (-) указывает, что файл является обычным файлом. (l) указывает длинный список. (d) указывает, что файл является каталогом, который в основном представляет собой особый вид файла.

5

В OS X вы можете использовать:

ls -lead

Параметр e показывает списки ACL. И ACL очень важны для понимания того, какие точные разрешения для вашей системы.

5

В дополнение к вышеуказанным сообщениям я хотел бы указать, что "man ls" даст вам хорошее руководство о команде "ls" ( "Список".

Также, используя ls -la myFile, вы увидите список всех фактов об этом файле.

4

В GNU/Linux попробуйте использовать ls, namei, getfacl, stat.

Для Dir

[flying@lempstacker ~]$ ls -ldh /tmp
drwxrwxrwt. 23 root root 4.0K Nov  8 15:41 /tmp
[flying@lempstacker ~]$ namei -l /tmp
f: /tmp
dr-xr-xr-x root root /
drwxrwxrwt root root tmp
[flying@lempstacker ~]$ getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

[flying@lempstacker ~]$ 

или

[flying@lempstacker ~]$ stat -c "%a" /tmp
1777
[flying@lempstacker ~]$ stat -c "%n %a" /tmp
/tmp 1777
[flying@lempstacker ~]$ stat -c "%A" /tmp
drwxrwxrwt
[flying@lempstacker ~]$ stat -c "%n %A" /tmp
/tmp drwxrwxrwt
[flying@lempstacker ~]$

Для файла

[flying@lempstacker ~]$ ls -lh /tmp/anaconda.log
-rw-r--r-- 1 root root 0 Nov  8 08:31 /tmp/anaconda.log
[flying@lempstacker ~]$ namei -l /tmp/anaconda.log
f: /tmp/anaconda.log
dr-xr-xr-x root root /
drwxrwxrwt root root tmp
-rw-r--r-- root root anaconda.log
[flying@lempstacker ~]$ getfacl /tmp/anaconda.log
getfacl: Removing leading '/' from absolute path names
# file: tmp/anaconda.log
# owner: root
# group: root
user::rw-
group::r--
other::r--

[flying@lempstacker ~]$

или

[flying@lempstacker ~]$ stat -c "%a" /tmp/anaconda.log
644
[flying@lempstacker ~]$ stat -c "%n %a" /tmp/anaconda.log
/tmp/anaconda.log 644
[flying@lempstacker ~]$ stat -c "%A" /tmp/anaconda.log
-rw-r--r--
[flying@lempstacker ~]$ stat -c "%n %A" /tmp/anaconda.log
/tmp/anaconda.log -rw-r--r--
[flying@lempstacker ~]$

Ещё вопросы

Сообщество Overcoder
Наверх
Меню