スクリプトによって、新しいサブフォルダとファイルが自動的に作成されるフォルダがあります。
親ディレクトリに配置されたすべての新しいフォルダとファイルに対して、ユーザーとグループのアクセス許可を再帰的に維持したいです。私はこれがスティッキービットを設定することを含むことを知っています、しかし私は私が必要なものを正確に示すコマンドを見つけるようには思えません。
これは私がこれまでにやったことです:
Sudo mkdir -p /path/to/parent
Sudo chmod -R 660 myself:somegroup /path/to/parent
その後、私は660パーミッションを/path/to/parent
に置かれたフォルダーとファイルに再帰的に設定したいです。
しかし、これまでに試したことはすべて失敗しました。誰かが助けてもらえますか?
実際には8進数のフラグ660はおそらく正しくないかもしれません。必要な権限は次のとおりです。
/path/to/parent
の下に置かれたディレクトリは、権限を持つユーザーによって実行可能です。/path/to/parent
内のファイルとフォルダは誰にでも読めない私はUbuntu 10.0.4 LTSを使っています。
誰かが助けてもらえますか?
Grawityはすばらしい答えを出しますが、私は編集された質問が事情をわずかに変えたかもしれないと思います。
私は、Apacheのユーザー/グループが所有するディレクトリをそのままにしておくことをお勧めします。これはおそらくあなたのディストリビューションによってApacheかhttpdのどちらかでしょう。
例えば.
chown -R Apache:apache /path/to/parent
そうすれば、 https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian または自分自身をApacheグループに追加して、ディレクトリへのグループアクセス権を確実に与えます。 (usermod -aG Apache username
のようなもの)
Htmlスクリプトやjpg、その他のランダムなものを実行可能にしたくないので、ディレクトリ全体をchmod -R
しないでください。必要に応じて権限を変更する必要があります。 (ただし660にリセットしても最悪のアイデアにはならないかもしれません。)
あなたが試してみることが好きかもしれませんものがあります:
chmod o+w file
「o」は「その他」を意味し、「w」は「書き込み」を意味します。また、 'user'に 'u'、 'group'に 'g'、 'r'と 'x'を付けることもできます。権限を削除するには、「+」ではなく「 - 」を使用します。
あなたが探しているパーミッションビットは0770と0660です。
rw-
の許可→110
のバイナリ→6
の8進数グループの所有権は、次のようにchmod g+s
を使用してsetgidビットを設定することで、フォルダー/ path/to/parentに作成された新しいファイルおよびフォルダーに継承できます。
chmod g+s /path/to/parent
これで、/ path/to/parentの下に作成されたすべての新しいファイルとフォルダーには、/ path/to/parentに設定されているのと同じグループが割り当てられます。
POSIXファイルのアクセス権は継承されません継承されません。それらは作成プロセスによって与えられ、その現在のumask値と組み合わされます。
ただし、これを実現するために POSIX ACL を使用できます。ディレクトリにデフォルトACLを設定します。
setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent
これはsetfacl
を/ path/to/parentディレクトリに適用し、-m
efaultACLを修正する-d
- 新しく作成されたアイテムに適用されるものになります。 (大文字のX
は、ディレクトリだけが+x
ビットを受け取ることを意味します。)
(必要に応じて、ACLにu:someuser:rwX
またはg:someuser:rwX
(できればグループ)を追加できます。)
注:ext3/ext4を使用している古いシステムでは、acl
オプションを使用してファイルシステムをマウントする必要がありました。そうしないと、すべてのACLが無視され、新しいACLを設定できなくなります。
mount -o remount,acl /
これを恒久的に設定するには、tune2fs -o acl <device>
を使用するか/etc/fstab
を編集します。
私はあなたが問題を複雑にし過ぎていると思います。最上位ディレクトリに他の人がアクセスできない場合、他の人はツリー内にファイルを作成できません。 Apacheだけが書き込みを行っている場合は、グループ書き込みアクセスは必要ありません。
これらのステップはあなたが望むことをするべきです(コマンドのdirectoryをあなたが使いたいディレクトリで置き換えます):
umask 027
に/etc/default/Apache
を追加します。これにより、他者がApacheが作成したファイルやディレクトリにアクセスするのを防ぐことができます。chown www-data:www-data directory
を実行します。chmod 750 directory
を実行します。Apacheにディレクトリへの書き込みを許可すると、提供しているコンテンツにあらゆる種類のマルウェアを注入することが可能になります。このディレクトリツリーの内容を適切に監視してください。