web-dev-qa-db-ja.com

Sudoを使用せずにComposerを実行(変更された所有者と権限を試行)

composer(たとえば、Sudo composer install, Sudo composer self-updateなど)を実行するたびに、ファイルの所有者がrootであるため、これをSudoで実行する必要があります。

ただし、composerをSudoルートで使用するたびにベンダーフォルダーを所有し、そのフォルダー/特権の所有者をルートからwww-dataに変更する必要があります。

毎回Sudoを実行する必要がないように、これを修正する最良の方法は何ですか?

/usr/local/bin/composerの所有者をルートからwww-dataに変更しますか?

これは、Sudo composer installを使用するたびに所有権を変更し、許可を割り当てる必要を回避するためにこれを処理する理想的な方法ですか?

編集: composerのパーミッションは現在-rwxr-xr-xです。そして、/usr/local/bin/composerの所有者を775に設定された権限でwww-data:www-dataに切り替えようとしましたが、Sudoを実行しないとcomposerを実行できません。

11

「全員」が作曲家の読み取りと実行を許可されている場合、Sudoを使用する必要はありません。

Sudo chmod 755 /var/local/bin/composer

composerをrootとして少なくとも1回はすでに実行しているため、composers(per-user-)cacheディレクトリはrootが所有するため、通常のユーザーは書き込みできません。

Sudo chown -R lamp:lamp /home/lamp/.composer

ファイル所有者を修正します。

6
tkausl

私は何週間もこの問題に取り組んできました。

解決策は、composer自己更新を-Hで実行することだと思います

Sudo -H composer self-update

これを行う前に、ルートの.composerディレクトリと、composerを実行するユーザーのホームディレクトリを削除してください。

Sudo rm -rf /root/.composer
Sudo rm -rf /home/ubuntu/.composer

-HフラグなしでSudo composer self-updateを実行すると、rootが所有する〜/ .composerが作成され、他のcomposerコマンドが許可エラーを持つのを防ぎます。

composer config
composer install 

私の意見では、Sudo composer self-updateを呼び出すと、現在のユーザーのホームディレクトリにrootが所有するファイルを作成すべきではありません。

Ubuntu 14.04でこれらの指示に従う場合、composerはキャッシュを次の場所に配置することに注意してください。

 ~/.cache/composer

のではなく:

~/.composer/cache

これは、Ubuntu 14.04で定義されているXDG_RUNTIME_DIR環境変数のためですが、Ubuntu 12.04では定義されていないようです。

関連する議論はこちら

5
Lance