루트가 아닌 사용자가 소유한 파일이 있습니다.
# ls -l example.php
-rw------- 1 foo bar ... example.php
방금 다음과 같은 명령을 사용하여 패치를 적용했습니다.
patch -p0 <<-EOF
--- .../example.php.orig 2012-06-20 15:07:13.000000000 +0200
+++ .../example.php 2012-06-20 15:43:05.000000000 +0200
...
EOF
루트로서 대상 파일 사용자 및 그룹이 으로 변경되었습니다 root
. 페이지에서 이에 대한 참조를 찾을 수 없습니다 man
.
어떤 방법이 있나요?이전과 같이 파일 소유권을 유지하세요su
, sudo
또는 를 사용하지 마십시오 chown
.
su
그룹을 지정할 수 없는 것 같습니다.sudo -u foo patch ...
잘 작동하지만 잘못된 그룹이 설정되었습니다.sudo -u foo -g bar patch ...
반품Sorry, user root is not allowed to execute '/usr/bin/patch' as foo:bar on hostname
. 사용자가foo
그룹의 구성원이 아니기 때문일 수 있습니다bar
.chown
실행하기 전에 권한을 저장patch
하고 코드 두 줄을 더 추가해야 함을 의미합니다.
답변1
patch
새 파일을 생성하므로 유효한 사용자 자격 증명이 저장됩니다.
해결 방법: 를 patch -o
사용하여 임시 파일을 만든 다음 cat
tmp 파일을 원본 파일에 복사하기만 하면 됩니다.