4

ユーザーdidongo(ユーザーとグループdidongo)とnginxサーバー(ユーザーとグループwww-data)があります。ユーザーとしてログインするように Capifony をセットアップしましdidongoた。初めてsetfaclコマンドをデプロイすると、正常に動作します (logs フォルダーが空の間)。しかし、nginx によって提供される Web アプリケーションがいくつかのログ (prod.log) を生成した後、次のデプロイはsetfaclエラーで失敗します。

ユーザーと Web サーバーの間のアクセス許可で noob エラーが発生していると確信していますが、どのエラーが表示されません。彼がアクセス許可を持っていないファイルのアクセス許可を変更することはできないdidongoはずです。では、サーバーまたは Capifony をどのように構成すればよいのでしょうか?

ありがとう!

関連する(そうであることを願っています)Capifony deploy.rb config:

set :user,                  "didongo"
set :webserver_user,        "www-data"
set :permission_method,     :acl
set :use_set_permissions,   true

set :shared_children,       [app_path + "/logs", web_path + "/uploads", "vendor"]
set :writable_dirs,         ["app/cache", "app/logs"]

これは Capifony エラーです:

$ setfacl -R -m u:didongo:rwx -m u:www-data:rwx /home/didongo/staging/shared/app/logs
setfacl: /home/didongo/staging/shared/app/logs/prod.log: Operation not permitted

ACL に関するいくつかのデータ:

$ getfacl app/logs

# file: logs
# owner: didongo
# group: didongo
user::rwx
user:www-data:rwx
user:didongo:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:didongo:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

# file: logs/prod.log
# owner: www-data
# group: www-data
user::rw-
user:www-data:rwx               #effective:rw-
user:didongo:rwx                #effective:rw-
group::rwx                      #effective:rw-
mask::rw-
other::r--
4

3 に答える 3

3

これを sudo で一度試してみると、sudo を使用する必要がなくなります

sudo sh -c 'setfacl -R -m u:didongo:rwX -m u:www-data:rwX /home/didongo/staging/shared/app/logs'

x+パーミッションを設定する必要があるので、これを読んでください

于 2013-11-05T08:42:27.710 に答える
1

ここでの問題は、prod.logファイルが自動的に作成されたため、その所有者がwww-data. Capifony は、didongoユーザーとしてデプロイメントを実行します。setfacl1 人のユーザーが他の所有者のファイルに対して行うことはできません。

したがってdidongo、グループに追加するだけwww-dataです:sudo adduser didongo www-data

于 2013-03-16T08:12:29.037 に答える
0

最後に、これを管理して、ユーザーと同じ権限を持つさまざまなPHP-FPMプールを作成しました。このようにして、さまざまなユーザーを互いに分離させることができます。そしてボーナスとしてdeploy.rbは単純化されます。

于 2013-02-07T12:16:07.517 に答える