루트에 속한 디렉터리 구조의 소유권을 bash 스크립트를 실행하는 현재 사용자로 변경하려면 스크립트에 무엇이 필요합니까?

루트에 속한 디렉터리 구조의 소유권을 bash 스크립트를 실행하는 현재 사용자로 변경하려면 스크립트에 무엇이 필요합니까?

내 bash 스크립트에는 다음과 같은 부분이 있습니다.

su root -c chown -R smithb:other /export/home/smithb/workspace/rootownsit/
exit

이 디렉토리 rootownsit와 두 개의 하위 디렉토리는 에서 생성하고 소유합니다 root. 위에 있는 내용이 효과가 있을 것이라고 생각했지만 그렇지 않았습니다. 내 사용자로 bash 스크립트를 실행할 때 루트 비밀번호를 묻는 메시지가 표시되고 chown루트 비밀번호를 입력하면 사용 메시지가 표시됩니다. rootownsit 디렉토리와 그 하위 디렉토리의 소유권을 변경해야 합니다.

답변1

이는 단순한 구문 문제입니다. su대상 사용자의 로그인 셸에서 구문 분석되는 단일(선택적) 명령 인수를 사용합니다. 여기서 루트로 실행하는 명령의 매개변수는 -c입니다 chown. 단일 인수가 되도록 명령을 스크립트 내에서 따옴표로 묶습니다.

su -c 'chown -R smithb:other /export/home/smithb/workspace/rootownsit/' root

내장 명령은 exit스크립트를 종료합니다. 이를 원하지 않으면 호출하지 마세요 exit.

관련 정보