私の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
ディレクトリの下に作成されたファイルの権限をより強力に制御するには、次のsomedir
ACLルールを追加して次のようにデフォルトの権限を設定できます。
今後
$ 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-x
(g:apache:rx
)に設定されています。これにより、すべての新しいファイルの対応するビットr
のみがアクティブになります。
答え2
TL:医者。新しいコンテナフォルダのグループを継承するファイルは、次のことを行います。
$ chmod g+s somefolder
注:これは許可された答えに示されており、これは単なるスニペットです。
答え3
bsdgroups
slmの回答を補完するために、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.