Para sua informação, eu tento strace ls -lmais tarde, vejo uma openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4declaração.
Rick
7
Claro, a realidade é mais complexa hoje em dia. Não está /etc/passwdnos BSDs. Um ativo nscdmudará as coisas; assim como o NSS. Portanto, observe que essa pergunta se baseia em uma visão de mundo da 7ª Edição.
JdeBP 8/03
4
@JdeBP Programação antiga no ambiente Unix , então?
Andrew Henle
@JdeBP Não é? Fiquei surpreso quando você disse isso porque achava que muitos programas (scripts e binários) seriam interrompidos, os quais dependem (talvez de maneira errada, mas ainda assim) da presença de / etc / passwd.
Peter - Restabelece Monica
Não é, como a leitura apropriada da página do manual, incluindo sua seção FILES, será revelada. (-:
JdeBP 11/03
Respostas:
50
O sistema de arquivos associa diretamente os valores numéricos de UID (ID do usuário) e GID (ID do grupo) ao arquivo, não o nome do usuário e o nome do grupo (que são cadeias). Portanto, o ls -lcomando (e qualquer outro comando que exibe o usuário e o proprietário do grupo de um arquivo) precisa obter o nome do usuário e do grupo de algum lugar. O /etc/passwdarquivo é uma dessas fontes (provavelmente a fonte original e a mais comum). O manual confirma isso - de PASSWD (5) (ou seja, a página de manual do /etc/passwdarquivo):
muitos utilitários, como ls (1), usam-no para mapear IDs de usuário para nomes de usuário
Para complementar a resposta: POSIX especifica a opção -npara ls. Isso impede a conversão de UIDs e GIDs em nomes de usuários e nomes de grupos. Eu testei ls -ncom o GNU core utils ' lse a opção impediu o acesso a ambos /etc/passwde /etc/groupconforme o esperado.
strace ls -l
mais tarde, vejo umaopenat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
declaração./etc/passwd
nos BSDs. Um ativonscd
mudará as coisas; assim como o NSS. Portanto, observe que essa pergunta se baseia em uma visão de mundo da 7ª Edição.Respostas:
O sistema de arquivos associa diretamente os valores numéricos de UID (ID do usuário) e GID (ID do grupo) ao arquivo, não o nome do usuário e o nome do grupo (que são cadeias). Portanto, o
ls -l
comando (e qualquer outro comando que exibe o usuário e o proprietário do grupo de um arquivo) precisa obter o nome do usuário e do grupo de algum lugar. O/etc/passwd
arquivo é uma dessas fontes (provavelmente a fonte original e a mais comum). O manual confirma isso - de PASSWD (5) (ou seja, a página de manual do/etc/passwd
arquivo):fonte
-n
parals
. Isso impede a conversão de UIDs e GIDs em nomes de usuários e nomes de grupos. Eu testeils -n
com o GNU core utils 'ls
e a opção impediu o acesso a ambos/etc/passwd
e/etc/group
conforme o esperado.