Birisi `ls -l` komutunu her çalıştırdığında neden / etc / passwd kullanılır?


28

APUE'den okuyun , sadece merak edin:

Parola dosyası, bir kullanıcı bir UNIX sistemine her giriş yaptığında ve biri her ls -lkomut çalıştırdığında kullanılır .


3
Bilginize strace ls -ldaha sonra deneyeceğim , bir openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4açıklama görüyorum .
Rick

7
Tabii ki, bugünlerde gerçeklik daha karmaşık. /etc/passwdBSD'lerde değil . Bir aktif nscdşeyleri değiştirecek; NSS gibi. Bu nedenle, bu sorunun 7. Baskı dünya görüşüne dayandığını unutmayın.
JdeBP

4
@JdeBP Unix Ortamında Eski Programlama ?
Andrew Henle

@JdeBP değil mi? Bunu söylerken şaşırdım çünkü birçok programın (senaryo ve ikili dosyalar), / etc / passwd'nin varlığına dayanan (belki de yanlış ama yine de) kırılacağını düşünüyorum.
Peter - Monica

Bu, FILES bölümü de dahil olmak üzere el kitabının düzgün bir şekilde okunması, ortaya çıkacağı gibi değildir. (-:
JdeBP

Yanıtlar:


50

Dosya sistemi, sayısal UID (Kullanıcı Kimliği) ve GID (Grup Kimliği) değerlerini, kullanıcı adı ve grup adıyla (dizeler olan) değil, doğrudan dosyayla ilişkilendirir. Bu nedenle ls -lkomutun (ve bir dosyayı kullanıcı ve grup sahibini gösteren herhangi bir komutun) kullanıcı ve grup adlarını bir yerden alması gerekir. /etc/passwdDosya böyle bir kaynak (muhtemelen orijinal ve en yaygın kaynak) 'dir. El kitabı bunu taşır - PASSWD'den (5) (örneğin, /etc/passwddosyanın man sayfası ):

ls (1) gibi birçok yardımcı program kullanıcı kimliklerini kullanıcı adlarıyla eşlemek için kullanır


17
Cevabı tamamlamak için: POSIX -niçin seçeneği belirler ls. Bu, UID'lerin ve GID'lerin kullanıcı adlarına ve grup adlarına çevrilmesini önler. ls -nGNU core utils 'ile test ettim ve hem beklendiği gibi lshem de erişimi engelleme seçeneği . /etc/passwd/etc/group
pabouk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.