우선, 저는이 리눅스 세계에서 완전히 새로운 것입니다. 그래서, 당신이 읽을 때 이것을 고려하십시오.
나는 주기적으로 실행해야하는 bash 코드를 10에서 20 줄 가지고있다. 어제, 나는 그 명령을 하나의 명령으로 실행할 수 있도록 그 행들을 하나의 bash 파일에 넣으려고했다. 하지만 코드에 ‘cd / root’와 같은 셸 로그인으로 만 실행할 수있는 작업이 포함되어 있기 때문에 어느 정도 문제가 있습니다. 자, 내가 그들을 실행할 때마다 ‘sudo -s’를 사용하여 쉘에 로그인해야합니다.
여기 내 코드의 일부입니다.
cd ~
cp -Rf $worthy_folders /root/
sudo -s
cd /root
sudo chown -R root:root $worthy_folders
분명히 나는 그것들을 그대로 bash 파일에 쓸 수 없다. 암호 만 입력하면 여러 번 입력해야합니다. 또한 ‘sudo cd’가 작동하지 않습니다. 그래서, 내 질문에, 거기에 하나의 bash 파일에 그 명령을 작성하고 그냥 그들을 실행하는 방법은 무엇입니까?
답변
모든 것을 파일에 넣을 수 있습니다. myscript.sh , 그리고 나서 sudo로 모든 것을 실행 시키십시오 :
$ sudo myscript.sh
그런 식으로 sudo는 스크립트 전에 발생합니다. 그것이 받아 들일 수 없다면, 한 번에 sudo가 몇 가지 명령을 실행할 수 있습니다 :
$ sudo bash -c "cd /root; chown -R root:root $worthy_folders"
하지만별로 다르지는 않지만 최소한 모든 명령 대신 상승 된 권한으로 실행되는 작은 명령 하위 집합을 가질 수는 있습니다.
팁과 마찬가지로, 스크립트 중간에 암호를 묻는 것이 짜증나 며, 경쟁 조건이 발생할 수있는 경우 위험 할 수 있습니다. sudo는 -v 플래그로 호출하여 유효성을 검사 할 수 있습니다. 필요한 경우 암호를 묻는 메시지가 표시되고 sudoers 파일에 지정된 시간 초과를 다시 시작하도록 시간 소인을 다시 설정합니다.