oracle 사용자로서 특정 명령 세트를 실행한 다음 루트가 되어 일부 명령을 실행하고 oracle 사용자로 돌아가는 스크립트를 작성해야 합니다. 이 모든 작업은 하나의 스크립트로 수행되어야 합니다. 어떻게 해야 할까요? 더 구체적으로 말하자면, 저는 기본적으로 OTD(Oracle Traffic Director) 설치 및 구성을 자동화하고 있는데, 쉘 스크립트를 작성하라는 요청을 받았습니다. 설치의 모든 단계는 oracle 사용자로 수행되지만 다음 두 명령은 다음과 같습니다.
chown 루트 포트 바인딩
chmod 4750 포트 바인딩
이 작업은 루트 사용자로 수행해야 하며, 추가 자동화 단계는 oracle 사용자로 다시 완료해야 합니다. 따라서 스크립트에서 사용자(root 및 oracle)를 전환하는 방법이 필요합니다.
답변1
루트로 스크립트를 실행하고, -u
다른 사용자로 실행해야 하는 명령에는 sudo 스위치를 사용하세요. sudo에 대한 매뉴얼 페이지를 참조하십시오.man sudo
.
# sudo -u user echo test
test
답변2
oracle 사용자로 스크립트를 실행합니다. 스크립트에서 루트 권한이 필요한 부분은 sudo
명령줄에서와 마찬가지로 사용하세요. 예를 들어
#!/bin/sh
echo 'This command is echoed by oracle user'
sudo echo 'This command is echoed with superuser privileges'
visudo
그런 다음 실행해야 하는 특정 명령을 암호 없이 실행할 수 있도록 sudoers 파일(pass )을 구성합니다 . 파일 맨 아래에 다음 줄을 추가하고 필요에 따라 명령을 변경합니다. 실행하려는 각 명령에 대해 다음 줄 중 하나가 필요합니다.sudo
oracle localhost = (root) NOPASSWD: /path/to/command