![oracle 사용자로 특정 명령 세트를 실행하고 루트 사용자로 일부 명령을 실행해야 하는 스크립트를 작성해야 합니다. 어떻게 해야 합니까? [폐쇄]](https://linux55.com/image/106090/oracle%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A1%9C%20%ED%8A%B9%EC%A0%95%20%EB%AA%85%EB%A0%B9%20%EC%84%B8%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%20%EB%A3%A8%ED%8A%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A1%9C%20%EC%9D%BC%EB%B6%80%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%B4%EC%95%BC%20%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
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