ユーザーがファイルの代わりにファイル名を読み取るようにユーザー権限を設定できますか?

ユーザーがファイルの代わりにファイル名を読み取るようにユーザー権限を設定できますか?

UNIXベースのシステムでは、ユーザーにフォルダ内のファイル名への読み取りアクセス権を付与しますが、ファイル自体へのアクセス権を付与しない方法は何ですか?

答え1

あなたが言ったように、ファイル自体ではなくディレクトリ(フォルダ)に対する読み取り権限を設定してください。例えば

umask 022             # others have r-x permissions
mkdir /tmp/f
umask 027             # others have --- permissions
echo hello > /tmp/f/1
ls -la /tmp/f

与えられた

total 64
drwxr-xr-x   2 user  user   4096 Feb  5 21:27 .
drwxrwxrwt 370 root root   53248 Feb  5 21:27 ..
-rw-r-----   1 user  user      6 Feb  5 21:27 1

今、他の人がファイルを実行してls /tmp/f見ることができますが、1読むことはできません。

答え2

ディレクトリにread()ビットを設定すると、ディレクトリ内のファイルのファイル名にアクセスできますが、ディレクトリに実行()権限も設定されていないと、ファイルにrアクセスしたりディレクトリに入ることはできません。目次。cdx

つまり、このディレクトリから書き込みビットと実行ビット(少なくとも)をキャンセルしますchmod o=r dirname

関連:

関連情報