新しいファイルが同じ許可を継承するようにファイル許可を設定する方法は?[複製]


35

この質問にはすでに答えがあります:

スクリプトによって新しいサブフォルダーとファイルが自動的に作成されるフォルダーがあります。

親ディレクトリに配置されたすべての新しいフォルダーとファイルのユーザーとグループのアクセス許可を再帰的に維持したい。これにはスティッキービットの設定が含まれますが、必要なものを正確に示すコマンドが見つからないようです。

これは私がこれまでにやったことです:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

その後、に配置されたすべてのフォルダーとファイルに660アクセス許可を再帰的に設定する必要があります/path/to/parent

しかし、私が今までに試したことはすべて失敗しました。誰かが助けてくれますか?

実際、8進フラグ660はおそらく正しくさえありません。必要な権限は次のとおりです。

  1. 下に配置されたディレクトリ/path/to/parentは、権限を持つユーザーによって実行可能です
  2. ファイルは、ユーザー自身とsomegroupのメンバーによって読み取り/書き込み可能です
  3. のファイルとフォルダ/path/to/parentは誰でも読めません

Ubuntu 10.0.4 LTSで実行しています。

誰かが助けてくれますか?

回答:


10

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

私ではないchmod -R、あなたは、HTMLスクリプトやJPGのか、実行可能ランダムな他の事をしたくないので、ディレクトリ全体。必要に応じて権限を変更する必要があります。(ただし、660にリセットするのは最悪のアイデアではないかもしれません。)

あなたが試してみたいかもしれないものは次のとおりです。

chmod o+w file

「o」は「other」を意味し、「w」は「write」を意味します。また、「ユーザー」に「u」、「グループ」に「g」、および「r」と「x」を使用して、自明であることもできます。「+」ではなく「-」を使用して権限を削除できます。


私が思う最も簡単な解決策は、apacheユーザーグループに自分を追加することです。それを提案してくれてありがとう。なぜ自分でそれを考えなかったのか分かりません!
-oompahloompah

1
o+w、ここで良い選択は?変更がに限定されるべきではないug?それ以外の場合、ディレクトリとサブディレクトリのセキュリティを維持しようとするポイントは何ですか?
jww 14

61

探している許可ビットは0770と0660です。

  • rw-権限→ 110バイナリ→ 68進数

グループの所有権を使用してsetgidビットを設定することにより、フォルダ/パス/に/親で作成した新しいファイルおよびフォルダによって継承することができchmod g+s、このように:

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、/パス/に/親ディレクトリに-modifying -dEFAULT新しく作成されたアイテムに適用されるもの- ACLを。(大文字Xは、ディレクトリのみが+xビットを受け取ることを意味します。)

(必要に応じて、ACLにu:someuser:rwXまたはg:someuser:rwXグループ(できればグループ)を追加できます。)


注:ext3 / ext4を使用する古いシステムでは、aclオプションを使用してファイルシステムをマウントする必要がありました。そうしないと、すべてのACLが無視され、新しいACLの設定が禁止されます。

mount -o remount,acl /

これを永続的に設定するには、を使用tune2fs -o acl <device>または編集します/etc/fstab


5
答えてくれてありがとう。残念なことに、私はこれらすべてに非常に不慣れであり、あなたが書いたことは私にとってギリシャ語と見分けがつきません(ギリシャのSO'ersに申し訳ありません!)。あなたが書いたことのほとんどは理解できませんでした。Webプロセスがあり、Apache(所有者)と私(グループ)だけがファイルをrwしてディレクトリに変更できる親フォルダーにフォルダーとファイルを作成する機能をApacheに与えたいと思います。他のすべての人は禁止されています。それが私がやろうとしているすべてです。Apacheはサブフォルダーを作成し、その中にファイルを保存できる必要があります。
-oompahloompah

これは動作しませんunzipか?
datasn.io

2

問題を複雑にしすぎていると思います。トップレベルのディレクトリに他の人がアクセスできない場合、他の人はツリー内にファイルを作成できません。apacheのみが書き込みを行う場合、グループ書き込みアクセスは必要ありません。

これらの手順では、必要な処理を実行する必要があります(コマンドのディレクトリを使用するディレクトリに置き換えます)。

  • umask 027apache defaults scriptに追加します/etc/default/apache。これにより、Apacheが作成したファイルまたはディレクトリに他のユーザーがアクセスできなくなります。
  • chown www-data:www-data directoryApacheに書き込みを許可するディレクトリで実行します。
  • chmod 750 directoryApacheに書き込みを許可するディレクトリで実行します。

Apacheがディレクトリに書き込むことを許可すると、提供しているコンテンツにあらゆる種類のマルウェアを挿入する機能が開きます。このディレクトリツリーの内容を適切に監視します。

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