web-dev-qa-db-ja.com

www-dataユーザーをホームフォルダー内のフォルダーに渡すにはどうすればよいですか?

フォルダーがあります:/home/myuser/folderA

Www-dataユーザーに上記への書き込みアクセスを許可したいのですが、「myuser」は通常のアクセス権を持ち続けます(とにかくmyuserのホームフォルダーなので)。

どのコマンドを使用する必要がありますか?

注:www-data/home/myuser/内の他のフォルダーにアクセスできないようにします。

前もって感謝します。

31
nLinked

まず、グループwww-dataに自分を追加します

usermod -a -G www-data (your username)

次に:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

/home/myuserのアクセス許可が他のユーザーのアクセスを許可しない限り、トリックを行う必要があります。

最初のコマンドは、フォルダーのグループ所有権をWebサーバーの所有権に変更します。 2番目のコマンドは、www-dataグループのメンバーに読み取り、書き込み、ディレクトリに入る権利を与え、グループsフラグは、そのディレクトリ内で作成されるファイルがwww-dataを取ることを保証しますグループ-ファイルをmyuserとして作成すると、www-dataユーザーがアクセスできます。

Nb。これは、ユーザーアカウントとWebサーバーの両方のumask設定にも依存します。folderAで作成されたファイルにrwアクセスグループ(および必要なグループrwx内に作成されたディレクトリがあることを確認する必要があります)

あなたのウェブサーバーがあなたの/home/myuserディレクトリへの入力権を持っていない場合(かなり賢明です)、あなたは何か他のことをしない限りそこに入ることはできません。 2つのソルン:

  1. Sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA(これはいハックであり、再起動後に繰り返す必要があります。しかし、強力なトリックを使用して、SSH刑務所内のフォルダにアクセスすることもできます。)

  2. 共有フォルダを別の場所に移動するだけです。 /home/shared-stuff/folderA

2番目のオプションが最適です。 folderAの中のものが本当に公開されていて、だれがそれを見るかは気にしないとしましょう。次のように設定できます。

Sudo mkdir -m777 /home/shared-stuff

次に、その中に、たとえば上記のアクセス許可を持つfolderAと、www-dataが異なるアクセス許可を持つべきでないfolderBを入れることができます。

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB
46
artfulrobot

別の方法は、Apache configでユーザー名を直接変更することです。これは、それがローカルマシンであり、フォルダーに対して行われた権限を破壊する他の場所から画像を保存する場合です。また、ユーザーが1人だけで、www-dataを気にしない場合にも実行します。

$ Sudo vi /etc/Apache2/Apache2.conf

ユーザーとグループを見つけて、あなたのものを置きます
User <Your User>
Group <Your Group>

$ Sudo service Apache2 restart
6
Shadowbob