setfaclを使用してrsyncを介してApacheの再帰権限を生成する

setfaclを使用してrsyncを介してApacheの再帰権限を生成する

私はDokuwikiをローカルにインストールし、定期的にrsyncを使用してサーバーと同期します。私も友人にSSHアカウントを提供し、彼の公開Dokuwikiインストールをホストします。しかし、アクセス権の問題に遭遇しました。画像が読み取り専用であるにもかかわらず、Dokuwikiはキャッシュなどのためにデータディレクトリへの書き込みアクセスが依然として必要です。 Apacheサーバーはwww-dataユーザーとして実行されており、rsyncを実行するたびに権限がリセットされます。

私はこのサイトの他の答えに基づいてsetfaclを使用してデフォルトの権限を設定しようとしましたが、うまくいかないようです。 getfaclは権限がありますがDokuwikiが実行されていないことを示し、ユーザーwwwにファイルを書き込もうとすると - データも機能しません。私は何を見逃していますか?

wiki/data$ sudo su www-data
$ pwd
/var/www/wiki/data
$ whoami
www-data
$ touch hi
touch: cannot touch `hi': Permission denied
$ getfacl /var/www/wiki/data
getfacl: Removing leading '/' from absolute path names
# file: var/www/wiki/data
# owner: stian
# group: admin
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

以下は、権限の設定に使用するコマンドです。

setfacl -R -d -m u:www-data:7 /var/www/*

ベストアンサー1

問題#1:RsyncがACLを削除しています。

ACL権限を適用した後、またはスイッチをrsync使用することに注意してください。このコマンドを使用すると、同期時にこれらの内容が保存されます。-A--aclsrsync

rsync のマニュアルページから

    -A, --acls                  preserve ACLs (implies -p)

問題#2:ACL権限がありません

あなたの例を見ると、以下の権限が含まれています。

伝統パーマ

# owner: stian
# group: admin
user::rwx
group::r-x
other::r-x

ACL

default:user::rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

ただし、これらのACLは新しいオブジェクトを作成するためのものであり、思ったように正しく機能しません。www-dataデフォルトのACL権限に加えて、ユーザーのエントリを作成する必要があります。

はい

$ pwd
/tmp/somedir

$ mkdir data
$ setfacl -R -d -m u:gopher:7 data

$ getfacl data
# file: data
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:gopher:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

実験

dataそれでは、ユーザーとしてディレクトリにファイルを作成してみましょうgopher

$ sudo -u gopher touch /tmp/somedir/data/afile
touch: cannot touch `/tmp/somedir/data/afile': Permission denied

見慣れていますか?

追加ACL権限の追加

これは、ユーザーのACLを追加する必要があり、デフォルトのルールはアクセス用ではwww-dataなく新しいファイル/ディレクトリを作成するためのものであるためです。

$ setfacl -R -m u:gopher:7 data

次に、dataディレクトリを再確認してください。

$ getfacl data
# file: data
# owner: root
# group: root
user::rwx
user:gopher:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:gopher:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

唯一の違いは、ユーザーにアクセス権がgopherあることを示すACLがあることですrwx

user:gopher:rwx

実験の繰り返し

ディレクトリに書き換えてみてください。

$ sudo -u gopher touch /tmp/somedir/data/afile
$

効率的! ! !生成されたファイルをもう一度確認してください。

$ ls -l /tmp/somedir/data/afile
-rw-rw-r--+ 1 gopher gopher 0 Oct  7 21:36 /tmp/somedir/data/afile

おすすめ記事