web-dev-qa-db-ja.com

www-dataが所有する/ var / wwwのユーザー権限を付与します。

私はいくつかのウェブサイト用にシンプルなウェブサーバーをセットアップしています。

site1:/var/www/site1/public_html/

site2:/var/www/site2/public_html/

以前はrootユーザーを使用してファイルを管理し、それが終わったらそれらをwww-dataに戻しました(WordPressサイト、WPアップロードが必要です)。これはおそらく最善の方法ではありません。

Site2ではなくsite1のファイルを編集する権限を持ち、www-dataによって「所有」されているファイルを停止しない別のユーザー(user1と呼びます)を作成する方法を見つけようとしています。これを行う方法はありますか?

36
George Pearce

Site1の所有権を確認すると、次のようなものが見つかります。

ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/

これは、ディレクトリがユーザールート、グループルートによって所有されていることを意味します。ユーザールートにはディレクトリへの書き込み権限(読み取りおよび実行権限に加えて)がありますが、グループルートには読み取りおよび実行権限のみがあります。

グループの所有権を別の(new)グループに変更し、user1をその特定のグループに追加します。その特定のグループにも書き込み許可を与えます。

新しいグループを作成し、

Sudo addgroup site1

新しく作成したグループにuser1を追加し、

Sudo adduser user1 site1

User1が実際にそのグループに属していることを確認し、

groups user1

出力は次のようなリストになります。

user1 : <other-groups> site1

これで、目的のディレクトリのグループ所有権を変更できます。

Sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1

この新しいグループオーナーに書き込み権限を付与します。

Sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)

すべての変更が実際に存在することを確認し、

ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/

そのため、ディレクトリはユーザーroot、グループsite1によって所有されるようになりました。ユーザーrootとグループsite1の両方に、ディレクトリへの書き込み許可(および読み取りと実行の許可)があります。グループsite1に属するユーザーは、そのグループに付与されたすべての特権を享受できます。

ここで、user1としてログインし、site1ディレクトリに移動して、そのディレクトリにファイルを作成してみてください。

echo "My User1 Site" > index.html 
bash: index.html: Permission denied

ほとんどの場合、user1のプライマリグループはsite1ではないため、これは失敗しました。そのため、そのグループに変更します。

newgrp - site1

ファイルを再作成してみてください(グループを変更した後にuser1のホームディレクトリに移動していることに注意してください)。これで動作するはずです。作成されたファイルには全世界の読み取り許可があるため、Apache(またはWebサーバー)がファイルにアクセスする際に問題が発生することはありません。

編集

また、コメントの dan08 で指摘されているように、www-dataをsite1グループに追加する必要があります。

Sudo adduser www-data site1

多くの(すべてではない)ディストリビューションでは、www-dataはApache Webサーバーが実行されるユーザーです。これは、Apacheによって行われるすべて(特にPHPスクリプトを含む)が、デフォルトでユーザーwww-data(およびグループwww-data)の権限で行われることも意味します。 WordPressは、ユーザーwww-dataを使用してファイルを書き込みます。

Apache Webサーバーの実行状況を確認するには、コマンドを発行します。

ps aux | grep Apache2 | less
70
Masroor

site1grpsite2grpの2つのグループを作成します

Sudo groupadd site1grp && Sudo groupadd site2grp

www-dataを両方のグループに追加します。

Sudo adduser www-data site1grp && Sudo adduser www-data site2grp

User1とuser2を適切なグループに追加します

Sudo adduser user1 site1grp && Sudo adduser user2 site2grp

ユーザーの所有者がwww-dataで、グループの所有者が適切なグループになるように、サイトフォルダーの権限を変更します

Sudo chown -R www-data:site1grp /var/www/site1  && Sudo chown -R www-data:site2grp /var/www/site2

これで、www-dataは両方のサイトでユーザーおよびグループのアクセス許可を持ち、各ユーザーはそれぞれのサイトでグループのアクセス許可を持ちます。

7
Dan

ホームフォルダーの下にwordpressルートフォルダーがある場合:

Ubuntu/Apache

  1. ユーザーをwww-dataグループに追加します。

    クレジット www-dataグループへの書き込み権限の付与

    ユーザーのusermodを呼び出します。だからそれは次のようになります:

    Sudo usermod -aG www-data yourUserName
    

    www-dataグループが存在すると仮定

  2. ユーザーがwww-dataグループに属していることを確認します。

    groups yourUserName
    

    次のようなものが得られるはずです。

    yourUserName : yourUserGroupName www-data
    

    yourUserGroupNameは通常、ユーザー名に似ています

  3. ユーザーの所有権を保持したまま、フォルダーのグループ所有権を再帰的に変更します

    chown yourUserName:www-data -R yourWebSiteFolder/*
    
  4. ディレクトリをyourWebSiteFolderに変更します

    cd yourWebSiteFolder
    
  5. フォルダーとサブフォルダーのグループ権限を再帰的に変更して、書き込み権限を有効にします。

    find . -type d -exec chmod -R 775 {} \;
    

    /home/yourUserName/yourWebSiteFolder/'のモードが0755 (rwxr-xr-x)から0775 (rwxrwxr-x)に変更されました

  6. ファイルおよびサブファイルのグループ許可を再帰的に変更して、書き込み許可を有効にします。

    find . -type f -exec chmod -R 664 {} \;
    

    結果は次のようになります。

    WAS:
    -rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
    CHANGED TO:
    -rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
    

    に相当:

    chmod -R ug+rw foldername
    

    許可は664または775のようになります。

4
Jadeye

「新しいユーザー」と呼ばれる新しいグループを作成し、そのグループにwww-dataと「新しいユーザー」を追加する必要があります。

Sudo gpasswd -a new_user new_group

次に、所有者をnew_userに変更し、グループをnew_groupに変更できます。

Sudo chown -R new_user:new_group /var/www/site1

次に、site1へのグループレベルのアクセスを許可する必要があります。 www_dataは、new_groupに属しているため、サイトにアクセスできますが、new_userは、site2を所有するwww-dataグループに属していないため、site2にアクセスできません。

3
errikos

すべてのファイルがすでにwww-dataユーザー(ls -slahコマンドで確認できます)に属していると仮定すると、www-dataグループ(ファイルリストのユーザー名の後の次の列)に属する同じwww-dataグループにこれらのファイルの編集を許可します

# usermod -aG www-data username

既存のユーザーの場合、または

# adduser username www-data

新しく作成されたもの

1
vladkras