루트 사용자가 실행해야 하는 스크립트가 있습니다. su
스크립트 내에서 이것을 사용하여 스크립트를 실행하는 방법을 알고 싶습니다 . - CentOS7을 실행 중입니다.
내가 시도한 명령(아래)이 실패했습니다.
su root credentials=/home/root/root.cred
그런 다음 나머지 스크립트를 계속 진행하세요. 불행하게도 작동하지 않습니다. 루트로 변경할 때 루트에서 루트 비밀번호를 묻기 때문에 .cred 파일을 포함했습니다. su root
스크립트 내에서 실행하고 루트로 변경하는 방법이 있습니까 ?
어떤 아이디어가 있나요?
혼란스러울 수도 있지만 더 자세히 설명하고 싶습니다.
일반(Sudoer가 아닌) 사용자가 실행할 수 있는 스크립트가 있지만 명령은 sudo 명령이므로 sudoer로만 실행할 수 있습니다. 루트는 sudoer이므로 일반 사용자가 스크립트를 실행하면 스크립트 내에서 루트로 실행됩니다. 스크립트를 시작하면 su root
비밀번호가 필요하기 때문에 진행되지 않습니다. 명령을 전달 su
하고 스크립트 자체를 사용하여 나머지 스크립트를 실행하기 위해 루트 비밀번호를 입력하는 방법이 있습니까 ? 어쩌면 echo
아니면 뭐? - 모르겠어요. 그래서 이런 질문을 하게 됐어요.
궁금하신 점은 아래로 문의해주세요 :)
답변1
/etc/sudoers
비밀번호를 사용하지 않고 루트로 스크립트를 실행하려면 파일에 항목을 추가 해야 합니다 .
username ALL = (root) NOPASSWD: /your/script's/absolute/address
username
자신의 사용자 이름으로 바꿔야 합니다 .
그러나 권한이 없는(즉, Sudoer가 아닌) 사용자가 스크립트를 변조하면 비밀번호 없이 루트 권한으로 원하는 모든 프로그램을 실행할 수 있으므로 보안 조치는 위험합니다. 파일을 읽습니다. -루트가 아닌 사용자에게만 해당:
sudo chmod 755 your_script
이렇게 하면 sudoer가 아닌 사용자에게 스크립트를 읽고 실행(쓰기는 아님)할 수 있는 권한을 부여하게 됩니다.
또한 향후 반전을 방지하려면 다음을 수행하세요.
sudo chown root your_script
이렇게 하면 파일의 소유권만 루트에 부여하게 됩니다.
답변2
안전하게 "이 스크립트의 나머지 부분을 실행하기 위해 사용자를 루트로 변환"하는 메커니즘은 없습니다. 사용자 수준에서 루트 권한을 얻는 모든 방법에서는 프로그램 권한을 높이기 위해 새 자격 증명을 사용하여 셸이나 별도의 프로그램 인스턴스를 시작해야 합니다. 사용자가 쉘에 명령을 입력하는 문제를 해결하려면 system 을 사용해야 합니다 sudo
.
문제에 대한 해결책은 다른 스크립트로 승격시키려는 스크립트 부분을 분리하고 첫 번째 "일반 사용자" 부분 끝에서 sudo로 시작하는 것입니다. 그림에서 알 수 있듯이 파사 무사비대답은 visudo
sudoers 파일을 편집하고 구성하는 데 사용하고, 원하는 경우 비밀번호를 입력하지 않고 루트 스크립트를 실행할 수 있는 일반 사용자 권한을 부여하는 것입니다.
중요한: sudoers 정의에서 스크립트 및 매개변수(있는 경우)에 대한 전체 경로를 지정하고 호출 스크립트에 정확히 동일한 경로 및 매개변수를 작성해야 합니다. 예를 들어, /bin/mount /cdrom
sudoers 파일에서 권한을 부여하는 경우 호출 스크립트는 sudo /bin/mount /cdrom
이를 명시해야 이것이 작동합니다. 스크립트의 sudoers 파일에 매개변수가 없으면(예 /root/my_script.sh
: sudo /root/my_script.sh
매개변수 없이 스크립트를 호출합니다.) 또한 chmod go-w
누구도 스크립트를 수정하거나 실수로 승인되지 않은 명령을 실행할 수 없도록 스크립트를 루트가 소유하고 이에 적용되도록 해야 합니다 .