소유자 및 그룹을 변경하지 않고 패치

소유자 및 그룹을 변경하지 않고 패치

루트가 아닌 사용자가 소유한 파일이 있습니다.

# 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사용하여 임시 파일을 만든 다음 cattmp 파일을 원본 파일에 복사하기만 하면 됩니다.

관련 정보