ユーザーが制限されたディレクトリ内の特定のファイルにアクセスできるようにする方法は?

ユーザーが制限されたディレクトリ内の特定のファイルにアクセスできるようにする方法は?

次の権限を持つディレクトリがあります。

lighttpd drwx------

これには次のファイルが含まれています。

lighttpd.pid -rw-r--r--

残念ながら、実行しようとしたとき:

cat lighttpd/lighttpd.pid

所有者でもなく、自分が属しているグループのメンバーでもないユーザーに対して、次のメッセージが表示されます。

猫:lighttpd/lighthttpd.pid:権限が拒否されました。

所有者でもグループのメンバーでもないユーザーがlighttpd.pidにアクセスできるようにするにはどうすればよいですか?

答え1

ディレクトリ外のファイルへのハードリンクを作成すると機能します。 - EG ln lighttpd/lighttpd.pid example/lighttpd.pid。ユーザーはexample/lighttpd.pidアクセスなしで表示できますlighttpd/

答え2

x「other」ディレクトリへのlighthttpd実行/検索()許可

$ chmod o+X lighthttpd

大文字Xファイルモードビットセレクタchmod実行/検索は、ファイルがディレクトリの場合(または一部のユーザーに対してすでに実行権限がある場合)にのみ有効になります。

実行/検索ビットがディレクトリに設定されると、影響を受けるユーザーはopen()ディレクトリに入って(呼び出し)、その中にあるファイルとディレクトリにアクセスできます。また、読み取り(r)権限が必要です。ファイル自体(問題に応じて既に設定されています。)

読み取り(r)権限なしディレクトリに、ユーザーはディレクトリの内容を取得できないため、アクセスしたいファイルの名前を事前に知っておく必要があります。

基本ファイルシステムがサポートしている場合Posix アクセス制御リスト、次を使用してディレクトリに実行/検索権限を付与することもできます。setfacl 特定のユーザーについて所有者またはグループの割り当てを調整しないでください。

$ setfacl -m u:user:x lighthttpd

aclマウントオプション/runを使用してファイルシステムがマウントされていることを確認して、ファイルシステムがPosix ACLをサポートしていることを確認できます。mount:

$ mount | grep /dev/sdaX
/dev/sdaX on /mountpoint type ext4 (rw,acl)

aclマウント出力にない場合は、そのファイルシステムタイプのデフォルトオプションの1つになる可能性があります。これを確認できます。tune2fs:

$ sudo tune2fs -l /dev/sdaX |grep acl
Default mount options:    user_xattr acl 

acl有効になっておらず、何らかの理由ですべてのユーザーにディレクトリにアクセスする権限を与えたくない場合は、次の操作を実行できます。ラキ市のアドバイスその後、ユーザーがアクセスできるようにするファイルをファイルシステムの別のパス名に関連付けます。

答え3

詳しくは読んでいませんが、man setfacl必要なようです。

man setfacl部分:

はい

   Granting an additional user read access
          setfacl -m u:lisa:r file

   Revoking write access from all groups and all named users (using the effective rights mask)
          setfacl -m m::rx file

   Removing a named group entry from a file's ACL
          setfacl -x g:staff file

   Copying the ACL of one file to another
          getfacl file1 | setfacl --set-file=- file2

   Copying the access ACL into the Default ACL
          getfacl --access dir | setfacl -d -M- dir

関連情報