O que significa “+ 3” em resultado de 'ls -al'?

9

Por acaso, ao mover para um volume montado e digitar ll (alias para 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/

Eu tenho essa parte interessante: drwxr-x---+ 3

Eu entendo a parte drwxr-x--- , mas o que a outra parte + 3 significa?

Ps: estou usando o Ubuntu 16.04 x86

    
por Mark J. Adams 03.09.2016 / 20:49

2 respostas

14

O + após os bits de permissão normais indica que uma permissão especial está em vigor para o arquivo / diretório. A permissão especial é POSIX ACL (Access Control List).

Você pode definir uma regra de ACL usando setfacl e visualizar as regras já definidas por getfacl .

Exemplo:

% 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

Verifique man getfacl e man setfacl para ter mais ideia.

Como observação, se você vir um . no lugar de + , isso é para o contexto SELINUX.

E o 3 após + indica o número de links físicos que o arquivo possui. Um hardlink é um nome para o arquivo (inode do arquivo precisamente), portanto, o número de hard links indica o número de nomes que o arquivo possui.

No seu caso, a entrada é:

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

É para o diretório pai do diretório atual ( /media/username/DATA ), portanto, .. aponta para o diretório /media/username .

Agora, no Linux, cada diretório tem pelo menos dois links físicos, um é para . (diretório atual, link para si mesmo) e o outro é a entrada no diretório pai (mapeamento nome-inode), herdado do Unix.

Você tem uma contagem de hard links como 3 para /media/username , o que significa que /media/username tem um subdiretório (padrão 2 mais um para a entrada .. do subdiretório). Se houvesse 2 subdiretórios, a contagem do link físico seria 4 devido a ambos os subdiretórios mapearem .. de volta para o pai.

Verifique man ls também.

    
por heemayl 03.09.2016 / 20:58
7

+ no final da sequência de permissões significa uma permissão da ACL ( Lista de controle de acesso ). Você pode ver exatamente quais permissões ele permite e para quais usuários com

getfacl ../

ou melhor

getfacl /media/$USER

No meu caso:

$ 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::---

Isso mostra o proprietário e o grupo e, em seguida, o grupo "usuário" (proprietário) sem nome e as permissões do mundo (outros) com uma entrada extra para o usuário zanna. A "máscara" limita os direitos efetivos para usuários do grupo e nomeados.

As ACLs são uma extensão do sistema tradicional de permissões do Linux que permite que permissões sejam configuradas para um único usuário ou grupo, permitindo um controle mais refinado. Você pode ler mais sobre os motivos de segurança para ter o próprio root nesse ponto de montagem e o uso de permissões de ACL em /media em este post

O 3 não está relacionado ao + . indica o número de links físicos para o arquivo.

    
por Zanna 03.09.2016 / 20:52