파일 소유자를 변경하지 않고 sudo와 함께 명령을 사용하려면 어떻게해야합니까? apache 181 Aug 5 11:56

sudo를 사용하여 파일로 일부 활동을 수행하면 이러한 파일의 소유권이 변경됩니다. 파일 소유자를 변경하지 않고 sudo와 함께 명령을 사용하려면 어떻게해야합니까?

예제 파일 archivos35.sh는 Apache에서 왔지만 sed를 사용합니다 (usr admin sudo 사용)

$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh

adminsudo가있는 사용자 —

sudo sed -i s/old/new/g archivos35.sh

그러나 sudo로 해당 명령을 수행하면 파일 소유자가 변경됩니다.

$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh

sudo와 함께 명령을 사용하여 파일 소유자를 변경하지 않으려면 어떻게해야합니까? 소유자를 수정하지 않고 파일을 변경하고 싶습니다.



답변

sudo파일을 수정하는 데 사용해야 하는 경우 파일을 사용하여 올바른 사용자로 전환하십시오. 루트로 전환 할 필요 가 없습니다 . 기본값 일뿐입니다. 따라서 귀하의 경우 다음을 수행하려고합니다.

sudo -iu apache sed -i 's/old/new/g' archivos35.sh

그러면 sed사용자로서 명령 이 실행됩니다 apache.


답변

실제로 파일의 소유권을 변경하는 것이 아니라 이전 파일을 제거하고 새 파일을 만드는 것입니다. 그렇게하면 새 파일이 작성자의 uid가 소유 한 것으로 작성됩니다. 이를 피하려면 파일을 제자리에 수정해야합니다. 원본 파일을 덮어 써서 저장하는 텍스트 편집기를 사용하여 편집하십시오. 또는 출력을 사용하여 sed 명령을 임시 파일로 실행 한 다음 임시 파일을 원본 파일로 복사하십시오.