![루트에 속한 디렉터리 구조의 소유권을 bash 스크립트를 실행하는 현재 사용자로 변경하려면 스크립트에 무엇이 필요합니까?](https://linux55.com/image/40162/%EB%A3%A8%ED%8A%B8%EC%97%90%20%EC%86%8D%ED%95%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EA%B5%AC%EC%A1%B0%EC%9D%98%20%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94%20%ED%98%84%EC%9E%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A1%9C%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EB%AC%B4%EC%97%87%EC%9D%B4%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 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
.