저는 새 컴퓨터(실제로는 Ubuntu VM)를 설정하고 이 작업을 수행할 때 사용하는 몇 가지 일반적인 기능(Git, 컬, vim + janus)을 설정하기 위한 스크립트를 작성하려고 합니다.
그래서 내 스크립트는 다음과 같습니다.
#setup
#!/bin/sh
sudo apt-get install git
sudo apt-get install curl
...
내 명령에 "sudo"를 섞는 것은 좋지 않은 것 같습니다. 단지 보안상의 문제일 뿐입니다. 다음과 같은 것도 작동할 수 있을 것 같습니다.
sudo setup
더 좋은 방법이 있나요? 스크립트를 작성하고 권한을 높여야 할 때 경험적으로 적용되는 규칙은 무엇입니까?
답변1
스크립트에서 여러 "sudo" 호출을 사용하는 데 문제가 없습니다.
전체 스크립트를 루트로 실행하는 것보다 더 낫다고 생각합니다. 실제로 필요한 명령으로 권한 에스컬레이션을 제한하여 위험이 제한되기 때문입니다.
답변2
나는 두 가지 방법으로 모두 해냈습니다. 보안 위험은 동일하다고 생각합니다. 누군가가 스크립트를 편집하면 필요하지 않은 명령을 실행하게 됩니다. 따라서 쓰기 권한이 제한되어 있는지 확인하십시오.
sudo
전체 스크립트가 루트로 실행되는 것을 원하지 않으면 스크립트를 넣는 경향이 있습니다. 스크립트가 오랫동안 실행되는 경우(나는 gcc 또는 기타 대규모 프로젝트를 빌드하기 위해 스크립트를 작성함) 여러 호출이 sudo
사용자에게 여러 번 메시지를 표시할 수 있으며 이는 성가실 수 있습니다.
답변3
나는 아니오라고 말할 것입니다. 타당한 이유가 없는 한 그렇지 않습니다. 저는 보안이 매우 엄격한 대규모 금융 회사에서 일하고 있기 때문에 우리가 하는 일 중 하나는 모든 사람에게서 sudo를 제거한 다음 선택적으로 다시 부여하는 것입니다.
삭제한 ID 중 하나는 루트였습니다. 즉, "sudo rpm..."을 사용하여 RPM을 설치하면 루트로 설치하게 되므로 문제가 없지만 해당 RPM이 스크립트에서 sudo를 시도하면 실패하게 됩니다. 전역 sudo에서 루트가 잠겼습니다.
이제 특정 명령에 선택적으로 sudo를 부여하는 경우 루트에서 RPM sudo 호출의 100%를 부여하면 작동할 수 있습니다. 그러나 이것은 거의 불가능합니다.
RPM 스크립트에서 sudo를 사용하는 데 문제가 있습니다. 사용하지 않는 것이 좋을 것 같아요. 아니면 적어도 나와 같은 일부 회사에서는 누가 무엇을 위해 sudo를 사용하는지 심지어 루트도 알지 못할 수도 있다는 점을 명심하십시오.