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
アクセスしたりディレクトリに入ることはできません。目次。cd
x
つまり、このディレクトリから書き込みビットと実行ビット(少なくとも)をキャンセルしますchmod o=r dirname
。
関連: