루트로 쉘 명령을 실행하는 방법은 무엇입니까?

루트로 쉘 명령을 실행하는 방법은 무엇입니까?

저는 Amazon EC2 인스턴스에서 실행되고 루트 액세스가 필요한 특정 명령을 실행하는 애플리케이션을 개발 중입니다. 문제는 서로 다른 가상 머신이 서로 다른 방식으로 루트 액세스를 제공한다는 것입니다. 예를 들어 일부 가상 머신은 루트 계정에 대한 직접 액세스를 허용하는 반면, 다른 가상 머신은 루트가 아닌 기본 사용자에게만 sudo 액세스를 허용합니다.

이제 모든 명령 앞에 "sudo"를 추가하는 옵션을 추가하여 위의 예를 쉽게 해결할 수 있습니다. 그러나 나는 유닉스에 익숙하지 않으며 프로그램을 준비해야 하는 루트 권한을 얻는 다른 방법이 있는지 알고 싶습니다. su와 sudo가 충분히 합리적인가요?

답변1

sudo와 유사한 도구가 여러 가지 있습니다(calife, op, super 등) - 참조시스템 관리자(루트)로 명령을 실행하는 방법-- 하지만 Unix 시스템을 접하지 않고도 Unix 시스템에서 평생을 보낼 수 있습니다(모두 sudo로 대체되었습니다). 실제로 스크립트를 루트로 호출해야 하는 경우 모든 시스템이 비밀번호 없는 sudo를 갖도록 준비하거나 루트로 ssh 로그인을 허용합니다. 둘 사이에는 큰 보안 차이가 없습니다. 어느 쪽이든 스크립트에는 루트 계정에 액세스하는 데 필요한 모든 자격 증명이 있어야 합니다.

스크립트가 특정 명령만 실행할 수 있도록 하려면 에서 해당 명령에 대한 특정 항목을 사용 /etc/sudoers하거나 command=에서 줄이 있는 특정 키를 사용하십시오 ~root/.ssh/authorized_keys.

답변2

  • POSIX 파일 시스템은 일반적으로 setuid/setgid 비트를 구현합니다. 이는 안전하게 수행하기 어렵기 때문에 권장되지 않지만 다음과 같이 작동합니다.

.

  cp /usr/bin/id /tmp/rootid
  sudo chown root /tmp/rootid
  sudo chmod u+s /tmp/rootid
  /tmp/rootid

면밀히UID대지

  • sudo 및 su 작업은 조심하거나 sudo -E환경 su -과 상호 작용합니다. env -i피해를 피하기 위해 모든 su 호출을 명시적으로 래핑하는 것이 더 나을 수도 있습니다.

  • 솔라리스는RBACOpenSolaris는 호환성을 위해 sudo 패키지를 사용했지만

답변3

스크립트에서 명령을 실행하려는 경우 -tssh에 옵션을 전달합니다.

ssh -i file.pem -t myhost “sudo -n myscript”

sudo 옵션을 사용하면 -nsudo가 비밀번호를 묻는 메시지를 표시하지 않습니다. 명령에 비밀번호가 필요한 경우 오류 메시지가 표시됩니다.

EC2 인스턴스에 액세스하는 데 사용할 수 있습니다.

관련 정보