Що означає "+ 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
Ви маєте на увазі, що вам цікаво число між рядком дозволу та іменем власника?
Байт-командир

4
Детальну інформацію про деталі ls -lвиводу див. У розділі askubuntu.com/q/710905 , askubuntu.com/q/517229 або unix.stackexchange.com/q/103114 .
Байт-командир

Відповіді:


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також.


1
Це каталог, тому кількість посилань - це кількість підкаталогів плюс два.
Кевін

@Kevin Додано детальне пояснення.
heemayl

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, яка дозволяє встановлювати дозволи для одного користувача або групи, що дозволяє більш чітко контролювати. Ви можете прочитати про більш міркуваннях безпеки для має корінь власного цієї точки монтування і використанні дозволів ACL в /mediaв цьому повідомленні

Це 3не пов'язане з +. він вказує кількість жорстких посилань на файл.


2
Це пояснює лише +те, що сигналізує про те, що ACL активні для цього запису на додаток до традиційних налаштувань дозволу. Однак це не пояснює 3.
Байт-командир

2
@ByteCommander так, мені не прийшло в голову, вони запитували про 3, дякую!
Занна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.