ls -l
ディレクトリ内のファイルを一覧表示するコマンドを実行すると、/etc/passwd
ファイルにアクセスできますか。説明してください ??はいの場合、どうすれば確認できますか??
3 に答える
はい。/etc/passwd
ユーザー ID をユーザー名にマップするために使用されます。を使用してこれをオフにすることができます。これにより-n
、数値のユーザー ID とグループ ID (uid、gid) が表示されます。
$ ls -l
total 0
-rw-rw-r-- 1 thomas thomas 0 Sep 30 10:54 bar
$ ls -n
total 0
-rw-rw-r-- 1 1000 1000 0 Sep 30 10:54 bar
究極の証拠:
$ strace ls -l 2>&1 | grep /etc/passwd
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
$ strace ls -n 2>&1 | grep /etc/passwd
# no output
Thomas に +1 を追加しましたが、ファイルにアクセスできる場合とできない場合があることに注意してください。「/etc/nsswitch.conf」の内容に依存します。
この場合
$ grep passwd /etc/nsswitch.conf
passwd: compat
ファイルがアクセスされ、この場合
$ grep passwd /etc/nsswitch.conf
passwd: ldap
ならない。
"ls -l" は、ファイルとディレクトリ (メタデータ) に関する情報を出力します。たとえば、アクセス権、サイズなどです。ファイルやディレクトリの内容は読み取りません。ファイルへのアクセス権がない場合でも、そのメタデータを読み取ることができます (例: アクセス権、サイズ)。同じことがディレクトリにも当てはまります (例外: ディレクトリを読み取ることができない場合、その内容を一覧表示することはできません。また、ディレクトリを「実行」できない場合は、ディレクトリ内の何かにアクセスするためのパスのコンポーネントとして使用することはできません)。
最新の Linux システムのほとんどは「シャドウ パスワード」を使用するように構成されています。つまり、/etc/passwdにはパスワード ハッシュ (機密データ) が含まれていません。パスワードハッシュは/etc/shadowに保存されます。これが、 /etc/passwdが誰でも読み取り可能 (ユーザーに関するメタデータ (名前、ID、シェル、グループなど) のみを含む) である理由ですが、 /etc/shadowは root のみが読み取り可能です。