
私は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
--acls
rsync
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