사용자 bash 스크립트의 루트 쉘에서 실행

사용자 bash 스크립트의 루트 쉘에서 실행

특히 설치 폴더 생성과 같은 일부 작업을 루트로 수행해야 하는 스크립트가 있습니다. 나는 시도했다:

echo "Linux user password is needed in order to ..."
sudo -s
# also tried:
# sudo su
... code that requires root permission
exit
... code that requires user permission

문제는 "sudo -s" 이후에 스크립트가 중지되고 자동으로 생성된 루트 셸을 수동으로 종료한 후에만 스크립트가 계속된다는 것입니다.

사용자 스크립트에서 루트 쉘 명령을 실행하는 방법이 있습니까?

감사해요.

답변1

응, 이런 일들 때문에

sudo mkdir /mnt/mymountpoint

당신이 할 수 있는 일

sudo ./myrootscript.sh

적절한 매개변수를 확인하면 스크립트가 스스로를 다시 호출할 수도 있으므로 파일은 하나만 남습니다.

답변2

당신은 둘 다 잘못된 방식으로 사용하고 있습니다 sudo. su그냥 쓰거나 sudo -s따로 sudo su쓰면 결국 스크립트 내부에서 생성된 대화형 셸이 완성됩니다.이것들은 명령이다하다.

당신이 필요하기 때문에쉘 코드 조각루트로 실행하려면 어떻게든 단일 명령으로 래핑해야 합니다. 아마도 가장 쉬운 방법은 명시적인 서브셸을 사용하는 것입니다.

echo "Linux user password is needed in order to ..."
sudo sh -c '
 ... code that requires root permission
'

물론 스크립트의 다른 곳에 정의된 일부 변수를 사용하려고 하면 문제가 발생합니다. 이 경우 작은따옴표 대신 큰따옴표를 사용합니다.

하지만루트로 실행해야 하는 명령이 몇 개만 있는 경우 sudo각 명령을 실행하기 전에 사용하는 것이 가장 좋습니다.

관련 정보