Что означает «+ 3» в результате «ls -al»?

9

Случайно, при переходе на установленный том и набрав ll (псевдоним для ls -laF )

:/media/username/DATA$ ll
total 153
drwxrwxrwx  1 username username  8192 Sep  1 20:32 ./
drwxr-x---+ 3 root     root      4096 Sep  3 08:14 ../
drwxrwxrwx  1 username username 12288 Jul 26 22:29 documents/
drwxrwxrwx  1 username username 16384 Sep  2 02:01 downloads/

У меня есть эта интересная часть: drwxr-x---+ 3

Я понимаю часть drwxr-x--- , но что означает еще часть + 3 ?

Ps: Я использую Ubuntu 16.04 x86

    
задан Mark J. Adams 03.09.2016 в 18:49
источник

2 ответа

14

+ после обычных бит разрешения указывает, что для файла / каталога действует специальное разрешение. Специальным разрешением является POSIX ACL (Список контроля доступа).

Вы можете установить правило ACL с помощью setfacl и просмотреть уже установленные правила (ы) getfacl .

Пример:

% ls -l foo.sh
-rwxrwxr-x 1 foobar foobar 206 Aug 28 02:08 foo.sh

% setfacl -m u:spamegg:x foo.sh

% ls -l foo.sh                
-rwxrwxr-x+ 1 foobar foobar 206 Aug 28 02:08 foo.sh

% getfacl foo.sh
# file: foo.sh
# owner: foobar
# group: foobar
user::rwx
user:spamegg:--x
group::rwx
mask::rwx
other::r-x

Проверьте man getfacl и man setfacl , чтобы получить больше информации.

В качестве побочного примечания, если вы видите . inplace + , это для контекста SELINUX.

И 3 после + указывает количество жестких ссылок, которые имеет файл. Жесткая ссылка - это имя файла (файл inode точно), поэтому количество жестких ссылок указывает количество имен, которые имеет файл.

В вашем случае запись:

drwxr-x---+ 3 root     root      4096 Sep  3 08:14 ../

Это для родительского каталога текущего каталога ( /media/username/DATA ), поэтому .. указывает на каталог /media/username .

Теперь в Linux каждый каталог имеет как минимум две жесткие ссылки: один для . (текущий каталог, ссылка на него), а другой - это его запись в родительском каталоге (отображение имени-inode), это было унаследованный от Unix.

У вас есть счет жестких ссылок как 3 для /media/username , что означает, что /media/username имеет один подкаталог (по умолчанию 2 плюс один для записи .. в подкаталоге). Если было 2 подкаталога, количество жестких ссылок было бы 4 из-за того, что оба подкаталога отображали .. обратно родительскому.

Также проверьте man ls .

    
ответ дан heemayl 03.09.2016 в 18:58
источник
7

+ в конце строки разрешений означает ACL ( Список контроля доступа ). Вы можете точно определить, какие разрешения разрешать и с которыми пользователи с

getfacl ../

или скорее

getfacl /media/$USER

В моем случае:

$ getfacl /media/zanna
getfacl: Removing leading '/' from absolute path names
# file: media/zanna
# owner: root
# group: root
user::rwx
user:zanna:r-x
group::---
mask::r-x
other::---

Это показывает владельца и группу, а затем неименованные "пользовательские" (владельцы) группы и права на мир (другие) с дополнительной записью для пользователя zanna. "Маска" ограничивает эффективные права для групп и названных пользователей.

ACL - это расширение традиционной системы разрешений для Linux, которая позволяет устанавливать разрешения для одного пользователя или группы, что обеспечивает более точное управление. Вы можете больше узнать о причинах безопасности, связанных с тем, что у root есть эта точка монтирования и использование разрешений ACL в /media в этот пост

3 не связано с + . он указывает количество жестких ссылок в файл.

    
ответ дан Zanna 03.09.2016 в 18:52