ディレクトリ内の他のすべてのユーザーに対する「x」実行権限と書き込み権限を削除しました。 /u/permtst/テスト/ビット/。ディレクトリの詳細は、ユーザー:permtstとグループ:permtstです。
permtst@localhost(nyc):~/test/bits> ls -la
total 8
drwxrw-r-- 2 permtst permtst 4096 Aug 3 12:51 .
drwxrwsr-x 8 permtst permtst 4096 Aug 3 11:52 ..
-rw-rw-r-- 1 permtst permtst 0 Aug 3 11:56 test_file
-rw-rw-r-- 1 permtst permtst 0 Aug 3 11:56 test_file2
ユーザーモタマリ属していないライセンステストグループ。
~から他の人読み取り権限がある場合、ディレクトリーのlsはディレクトリー内のファイルのリストを提供する必要があります。ただし、次の内容が表示された場合は、No Access が印刷され、ファイルのリストも期待どおりに印刷されます。
私の質問はエラーが印刷される理由です。ls: cannot access '/u/permtst/test/bits/test_file': Permission denied
motamari@localhost:~% ls /u/permtst/test/bits/
ls: cannot access '/u/permtst/test/bits/test_file': Permission denied
ls: cannot access '/u/permtst/test/bits/test_file2': Permission denied
test_file test_file2
答え1
r
ディレクトリにないと、実際にファイル名を一覧表示できますが、ファイルを呼び出すことができないため(*)x
ファイルに関するその他の情報を取得できません。stat()
-F
または、などの短いリストの場合でもファイルの種類を決定する必要があるオプションで始まる場合、--color
エラーメッセージと動作はGNU lsが正確に表示するのと同じです。ls
オプションのある項目にエイリアスを追加した可能性がありますalias ls
。\ls
を使用するかプログラムを実行すると、エイリアスを無視できます/bin/ls
。を使用する-l
と、非常に混乱して見える一連の疑問符も得られます。
$ mkdir dir; touch dir/file.txt; chmod a-x dir;
$ ls dir
ls: cannot access 'dir/file.txt': Permission denied
file.txt
$ \ls dir
file.txt
$ ls -l dir
ls: cannot access 'dir/file.txt': Permission denied
total 0
-????????? ? ? ? ? ? file.txt
$ alias ls
alias ls='ls -vF --color=auto'
ただし、動作は実装によって異なります。たとえば、Busybox はエラーを見落とし、リストを印刷しません (ここでは ORls
も使用しません )。-F
--color
$ busybox ls dir
ls: dir/file.txt: Permission denied
(*一部のシステムではファイル形式も提供していますが、ここではreaddir()
なぜこれが十分でないのかわかりませんls
。)