Linuxでグループ権限を継承する新しいファイルをインポートする

Linuxでグループ権限を継承する新しいファイルをインポートする

私のLinuxサーバーに権限の問題があります。私はBSDに精通しています。ディレクトリをグループが所有し、ディレクトリを所有しているユーザーがwww-dataにない場合、ディレクトリに作成されたファイルはそのグループの所有になります。 Webサーバーがファイルを読み取ることができるようにしたいが(rootとして実行されない)、ユーザーはまだ新しいファイルをディレクトリに入れることができるので、これは重要です。ユーザーを www-data に入れることはできません。なぜなら、他のユーザーのウェブサイトを読むことができるからです。

私はWebサーバーがすべてのウェブサイトを読むことを望み、ユーザーが自分のウェブサイトを変更できるようにしたいと思います。

現在のフォルダ権限の設定は次のとおりです。

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

このように権限が動作するのは、BSDの標準動作です。 Linuxでこれを行うにはどうすればよいですか?

答え1

説明しているようです。GIDビット設定ディレクトリにこの機能セットがある場合、その中に作成されたすべての新しいファイルは、そのグループが親ディレクトリに設定されたグループと同じグループに設定されるように強制されます。

はい

$ whoami
saml

$ groups
saml wheel wireshark

権限+所有権でディレクトリを設定する

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

このディレクトリのファイルをsamlにタッチします。

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

そうすれば、おおよその目的を得ることができます。説明するものが本当に必要な場合は、その機能(ACL)を取得するためにアクセス制御リスト機能を使用する必要があると思います。

ACL

ディレクトリの下に作成されたファイルの権限をより強力に制御するには、次のsomedirACLルールを追加して次のようにデフォルトの権限を設定できます。

今後

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

権限の設定

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

+最後にある'に注意してください。これは、ディレクトリにACLが適用されていることを意味します。

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

後ろに

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

デフォルト権限(setfacl -Rdm)はデフォルト権限r-xg:apache:rx)に設定されています。これにより、すべての新しいファイルの対応するビットrのみがアクティブになります。

答え2

TL:医者。新しいコンテナフォルダのグループを継承するファイルは、次のことを行います。

$ chmod g+s somefolder

注:これは許可された答えに示されており、これは単なるスニペットです。

答え3

bsdgroupsslmの回答を補完するために、ext2/3/4ファイルシステムでは、パーティションのマウントオプションを使用して説明したBSD動作を複製できます。mount(1)マニュアルページから:

grpid|bsdgroups and nogrpid|sysvgroups
              These options define what group id a newly  created  file  gets.
              When  grpid  is  set,  it takes the group id of the directory in
              which it is created; otherwise (the default) it takes the  fsgid
              of  the current process, unless the directory has the setgid bit
              set, in which case it takes the gid from the  parent  directory,
              and also gets the setgid bit set if it is a directory itself.

関連情報