Perché / etc / passwd dovrebbe essere usato ogni volta che qualcuno esegue il comando `ls -l`?


28

Leggi da APUE , sentiti curioso:

Il file della password viene utilizzato ogni volta che un utente accede a un sistema UNIX e ogni volta che qualcuno esegue un ls -lcomando.


3
Cordiali saluti, ci provo strace ls -lpiù tardi, vedo una openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4dichiarazione.
Rick,

7
Certo, la realtà è più complessa al giorno d'oggi. Non è /etc/passwdsui BSD. Un attivo nscdcambierà le cose; come lo sarà l'NSS. Quindi, nota che questa domanda si basa su una visione del mondo della 7a Edizione.
JdeBP

4
@JdeBP Ancient Programming in Unix Environment , allora?
Andrew Henle

@JdeBP Non lo è? Sono rimasto sorpreso quando lo hai detto perché penserei che molti programmi (script e binari) si spezzerebbero e dipendono (forse erroneamente, ma comunque) dalla presenza di / etc / passwd.
Peter - Ripristina Monica il

Non lo è, come rivelerà la corretta lettura di quella pagina di manuale, inclusa la sua sezione FILES. (-:
JdeBP l'

Risposte:


50

Il file system associa direttamente i valori numerici UID (ID utente) e GID (ID gruppo) al file, non al nome utente e al nome del gruppo (che sono stringhe). Pertanto, il ls -lcomando (e qualsiasi altro comando che visualizza l'utente e il proprietario del gruppo di un file) deve ottenere i nomi dell'utente e del gruppo da qualche parte. Il /etc/passwdfile è una di queste fonti (probabilmente la fonte originale e più comune). Il manuale lo dimostra - da PASSWD (5) (ovvero dalla pagina man per il /etc/passwdfile):

molte utility, come ls (1) lo usano per mappare gli ID utente sui nomi utente


17
Per completare la risposta: POSIX specifica l'opzione -nper ls. Ciò impedisce la traduzione di UID e GID in nomi utente e nomi di gruppi. Ho testato ls -ncon GNU core utils ' lse l'opzione ha impedito l'accesso ad entrambi /etc/passwde /etc/groupcome previsto.
pabouk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.