Linuxサーバーの権限に問題があります。私はBSDに慣れています。ディレクトリがwww-dataなどにないグループによって所有されている場合、そのディレクトリに作成されたファイルはそのグループによって所有されます。これは重要です。なぜなら、ファイルをWebサーバー(rootとして実行しない)で読み取り可能にしたいのですが、ユーザーは引き続き新しいファイルをディレクトリに配置できるからです。ユーザーをwww-dataに入れることはできません。そうすれば、他のすべてのユーザーのWebサイトを読むことができるからです。
WebサーバーにすべてのWebサイトを読み取らせ、ユーザーが自分のWebサイトを変更できるようにしたい。
現在、フォルダにはこのように権限が設定されています…。
drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john
このように機能するパーミッションのBSDの標準的な動作です。 Linuxにこれを実行させるにはどうすればよいですか?
承認された回答:
setgidビット機能について説明しているようです。この機能は、それが設定されているディレクトリで、その中に作成された新しいファイルが、親ディレクトリに設定されているのと同じグループにグループを設定するように強制します。
例
$ 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
のみが含まれるようになります。 ビットが有効になっています。