sudo를 사용하지 않고 Composer 실행 (변경된 소유자 및 권한 시도)


13

작곡가 (예 : sudo composer install, sudo composer self-update등)를 실행할 때마다 파일 소유자가 root이므로 sudo 로이를 실행해야합니다.

그러나 sudo root와 함께 composer를 사용할 때마다 공급 업체 폴더를 소유 한 다음 해당 폴더 / 권한의 소유자를 root에서 www-data로 변경해야합니다.

매번 sudo를 실행할 필요가 없으므로이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

/usr/local/bin/composer루트 소유자 를 www-data로 변경 하시겠습니까?

이것이 sudo를 사용할 때마다 소유권을 변경하고 권한을 할당하지 않아도되도록 이것을 처리하는 이상적인 방법 composer install입니까?

편집 : 작곡가에 대한 권한은 현재 -rwxr-xr-x입니다. 그리고 난의 소유자 전환 시도했습니다 /usr/local/bin/composer에 이상을 www-data:www-data775로 설정 권한, 여전히 나는 실행하지 않고 작곡가를 실행할 수 없습니다 sudo.

답변:


9

"모두"가 composer를 읽고 실행할 수 있으면 sudo를 사용할 필요가 없습니다.

sudo chmod 755 /var/local/bin/composer

이미 적어도 한 번으로 composer를 한 번 실행 했으므로 root이제 composers (사용자 별) 캐시 디렉토리는 root가 소유하고 있으므로 일반 사용자가 쓸 수 없습니다.

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

파일 소유자를 수정합니다.


나는 이것을 시도했지만 여전히 composer self-updatesudo를 사용하지 않고 는 실행할 수 없습니다 . 775를 사용해야합니까?
회오리 바람을 타고

자체 업데이트는 755에서 작동하지 않지만이 문제가 중요합니까? 자체 업데이트는 매일 실행하는 데 필요한 것은 아니며 2 주마다 한 번씩 업데이트하면됩니다 (물론 sudo 사용).
tkausl

시도했지만 composer update이 권한으로는 작동하지 않습니다. 여전히 sudo를 먼저 사용해야합니다. 이것은 내가 얻는 오류입니다file_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
회오리 바람을 타고

오, 예, 이미 "sudo"를 사용하여 일부 dep를 업데이트했습니다. "/home/lamp/.composer/"는 루트가 소유하고 있다고 생각합니다.이 폴더 (캐시 만)를 삭제하면됩니다. sudo. (또는 변경 소유권 : chown -R lamp:lamp /home/lamp/.composer)
tkausl

그 비법은 소유자를 램프로 바꾸는 것과 함께 진행되었습니다. 답변을 업데이트해도 괜찮습니까? 감사합니다 takusl
회오리 바람

5

나는 몇 주 동안이 문제를 다루어 왔습니다.

해결책은 -H로 작곡가 자체 업데이트를 실행하는 것입니다.

sudo -H composer self-update

이 작업을 수행하기 전에 루트에서 .composer 디렉토리와 composer를 실행하려는 사용자의 홈 디렉토리를 제거하십시오.

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

-H 플래그없이 sudo composer 자체 업데이트를 실행하면 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에 정의되지 않은 것 같습니다.

여기에 관련된 토론


최신 버전의 작곡가를 이미 실행중인 경우에는 도움이되지 않습니다. $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey 2019 년

@Cragmonkey-최신 버전의 작곡가를 실행 중이지만 ~/.composer폴더를 제거 하면 문제가 해결되는 것으로 보입니다.
Cyclonecode
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.