“sudo”없이 루트로 프로그램을 실행하는 방법은 무엇입니까? 수있는 특정 바이너리 프로그램이 있습니다. sudo암호를 입력하고 입력

OS X에는 루트로만 실행할 수있는 특정 바이너리 프로그램이 있습니다.

sudo암호를 입력하고 입력 할 때마다 앞에 싫증이 났 으며 암호를 묻지 않고 정기적으로 호출 할 때 자동으로 루트로 실행 되기를 원합니다.

프로그램의 소유자는 루트이고 그룹은 wheel입니다.

chmod ug+s실행시 userid와 groupid를 root / wheel로 설정 하려고했지만 sudo없이 프로그램을 실행할 때 여전히 sudo 또는 root로만 실행할 수 있다고 불평합니다.



답변

실행하려는 프로그램이 실제로는 바이너리이고 쉘 스크립트가 아닌지 확인하십시오. 대부분의 쉘은 실제로 안전하게 수행하기가 어렵 기 때문에 suid 스크립트를 무시합니다. 확인하는 쉬운 방법 file은 프로그램 에서 명령 을 사용하는 것 입니다.


답변

문제에 대한 반 해결책 :

sudoers 파일에서 다음을 추가하십시오.

username ALL= NOPASSWD: /path/to/command

그런 다음 명령 행에서 다음을 입력 할 수 있습니다.

sudo command

암호를 묻지 않고 명령을 실행합니다. 이 명령은 루트로 실행됩니다.

사용자 이름을 실제 사용자 이름으로 바꿔야합니다.


답변

어떤 이유로 든 데몬으로 실제로 호출 할 수없는 경우 (이 질문은 해당 인스턴스와 관련이 있습니다) 이 방법 함께 해킹 수 있지만 꽤 더럽고 전혀 안전하지 않습니다.

개념은 AppleScript로 시작하는 것입니다. 먼저 명령 행에서 프로세스를 호출하는 방법을 알아야합니다 (이미 sudo를 사용중인 경우 모두 설정되어 있어야 함). do shell script명령을 사용하여 해당 프로세스를 시작하고 sudo를 사용하는 대신 AppleScript에 자격 증명을 작성합니다.

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

나는 이것이 안전하지 않다는 것에 대해 다시 한 번 강조한다. 이것은 귀하의 관리자 암호가 일반 텍스트로 저장 될 것임을 의미합니다. 가능하다면 이것을 LaunchDaemon으로 배경을 지정할 수있는 방법을 찾아야합니다.


답변

OSX에서 사용하는 프로그램이 / usr / local / bin / YourProgramName에 있다고 가정합니다.이 문제를 해결하려면 다음 명령을 수행하십시오. 파일 자체가 아닌 파일에 뿌리를 둔 파일 계층의 사용자 ID / 그룹 ID를 변경하려면 .

sudo chown -R $(whoami) /usr/local/bin/

… 그런 다음 터미널에서 programName, $ YourProgramName을 호출하십시오.


답변

넌 할 수있어

sudo tcsh

루트 쉘에 넣을 것입니다.


답변

프로그램 자체가 ID = 0으로 실행 중인지 확인하는 것처럼 보입니다.


답변

당신은 할 수 sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE있습니다.

여전히 dmckee의 의견에 전적으로 동의합니다.