Что означает «+ 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

мя
источник
1
Ты имеешь в виду, что тебе интересно количество между строкой разрешений и именем владельца?
Byte Commander
4
Для ls -lобъяснения частей вывода см. Askubuntu.com/q/710905 , askubuntu.com/q/517229 или unix.stackexchange.com/q/103114, пожалуйста.
Byte Commander

Ответы:

14

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

Вы можете установить правило 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после +указывает количество жестких ссылок, которые есть в файле. Жесткая ссылка - это имя файла (точнее, его индекс), поэтому количество жестких ссылок указывает количество имен, которые имеет файл.

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

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

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

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

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


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

heemayl
источник
1
Это каталог, поэтому количество ссылок - это количество подкаталогов плюс два.
Кевин
@Kevin Добавлено подробное объяснение.
Heemayl
7

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

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не связано с +. указывает количество жестких ссылок на файл.

Занна
источник
2
Это только объясняет, +хотя, что сигнализирует, что ACL активны для этой записи в дополнение к традиционным настройкам разрешений. Однако это не объясняет 3.
Byte Commander
2
@ByteCommander ха, мне не пришло в голову, что они спрашивают о 3, спасибо!
Занна