O que significa "+ 3" no resultado de 'ls -al'?

9

Acidentalmente, 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 + 3significa?

Ps: Estou usando o Ubuntu 16.04 x86

mja
fonte
11
Quer dizer que está curioso sobre o número entre a sequência de permissões e o nome do proprietário?
Byte Commander
4
Para as partes da ls -lsaída explicadas, consulte askubuntu.com/q/710905 , askubuntu.com/q/517229 ou unix.stackexchange.com/q/103114, por favor.
Byte Commander

Respostas:

14

Os +bits de permissão normais após indicam que uma permissão especial está em vigor para o arquivo / diretório. A permissão especial é POSIX ACL (Lista de controle de acesso).

Você pode definir uma regra da ACL usando setfacle 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 getfacle man setfaclpara ter mais ideia.

Como uma observação lateral, se você .vir um lugar +, é para o contexto SELINUX.


E o 3depois +indica o número de links físicos que o arquivo possui. Um hardlink é um nome para o arquivo (inode do arquivo com precisão), portanto, o número de links físicos 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), então ..aponta para o /media/usernamediretório

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

Você tem uma contagem de links físicos como 3 para /media/username, o que significa que /media/usernamepossui 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 ao mapeamento dos dois subdiretórios de ..volta ao pai.


Verifique man lstambém.

heemail
fonte
11
Como é um diretório, a contagem de links é o número de subdiretórios mais dois.
Kevin
@ Kevin Adicionado explicação detalhada.
heemayl
7

+no final da cadeia de permissões, significa uma permissão ACL ( Access Control List ). 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" (nome) não nomeado e as permissões mundiais (outros) com uma entrada extra para o usuário zanna. A "máscara" limita os direitos efetivos para usuários nomeados e de grupo.

As ACLs são uma extensão do sistema tradicional de permissões do Linux que permite que as permissões sejam definidas para um único usuário ou grupo, permitindo um controle mais preciso. Você pode ler mais sobre as razões de segurança para ter raiz Inventário ponto de montagem e o uso de permissões de ACL em /mediaem este post

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

Zanna
fonte
2
Isso explica apenas o fato +, que sinaliza que as ACLs estão ativas para esta entrada, além das configurações de permissão tradicionais. No entanto, isso não explica o 3.
Byte Commander
2
@ByteCommander hah não me ocorreu que eles estavam perguntando sobre os 3, obrigado!
Zanna