特定のディレクトリ内に作成されたファイルのグループと権限を強制するにはどうすればよいですか?


27

/ var / wwwディレクトリのtestuserアカウントから作成されたファイルの場合、アクセス許可としてg + rwx、グループとしてwww-dataが必要です。

どうすればこれを達成できますか?

SSH経由でファイルを作成しています。


1
ユーザーはどのようにファイルを作成していますか?FTP経由stor/ appe?HTTP経由PUT?シェルアカウントを通じて?これらの詳細は、考えられる答えに大きく影響するため重要であり、質問に答える必要があります。
JdeBP

入力のおかげで:)、私はSSH経由ですべてを作成しています。
-Mr.Gando

回答:


53

グループを設定するには/var/wwwsetgidビットを指定します。

chgrp www-data /var/www
chmod g+s /var/www

サブディレクトリも調整するには: find /var/www -type d -exec chmod g+s {} +

これにより、新しく作成されたすべてのファイルは、ユーザーの代わりに親ディレクトリのグループを継承します。


デフォルトのグループ許可を設定するには、ACLを使用する必要があります。「デフォルト」ACLを設定します。

setfacl -m "default:group::rwx" /var/www

サブディレクトリも調整するには: find /var/www -type d -exec setfacl -m d:g::rwx {} +

注:ファイルシステムでは、ACLサポートが有効になっている必要があります。デフォルトでオンになっている場合があります。上のext3ext4のあなたは「操作はサポートされていません」得るかもしれない、それは手動で有効にする必要があり、その場合には:

  • 現在マウントされているファイルシステムの場合: mount -o remount,acl /

  • 恒久的– 以下の方法のいずれか

    • fstabレベルで:編集/etc/fstabしてaclオプションフィールドに含める

    • ファイルシステムレベルで: tune2fs -o acl /dev/diskname


chmod -R g + s / var / wwwでサブディレクトリを取得できませんか?findコマンドが必要なようには見えません。
ボブポール

4
@bobpaul:いいえ、chmodすべてのファイルも取得するためです。
grawity

特にinstall、一部のコマンドは、何らかの方法でディレクトリのデフォルトACLをバイパスすることに注意してください。
ウルリッヒ・シュワルツ

@grawityこれは本当に素晴らしい答えであり、私の問題に対する解決策はそこにあると確信していますが、私はそれを理解できません。私が持っている/var/www/html/projectsフォルダをWWW-データは、ファイルを作成するときには、持っているrw-rw-r権限を私はコンソールで何かをするときに使用してファイルを作成しますrw-r--r。新しく作成されたファイルに常にrw-rw-r許可を与えるにはどうすればよいですか?
lewis4u

@ lewis4u:グローバルまたはディレクトリごと?グローバルな(プロセスごとの)デフォルトのパーミッションはによって制御されumaskます。setfaclメイン投稿のように、ディレクトリごとのデフォルトのパーミッションを変更できます。
悲しみ

3

これは、setgidで 'grawity'の答えに固執している人がいる可能性があります。フォルダーのグループが自分のものと異なる場合は、rootとしてchmodを実行する必要がありますが、これを行う必要があることを示すエラーは表示されません。

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                    #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo       #and the group is still wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and group is set

これに出くわす前に髪を引っ張っていました。ありがとう。
アンドリュースティーブンス

0

ユーザーが作成するファイルのグループは、そのユーザーのグループ(/ etc / group内)です。権限はUMASKパラメータによって制御され 、これを見ます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.