2013-08-09 2 views
0

sudo su - john 내가 john이되어이 아닌 비밀번호가 필요합니다.
하지만 내가 할 때 : sudo su - john /usr/share/script_to_run.pl 암호를 묻는 메시지가 나타납니다. 동일 함 sudo -u john /usr/share/script_to_run.plsudo와 실행중인 스크립트가 혼동 스럽습니다.

왜? 여기서 내가 뭘 잘못하고 있니?

+0

/etc/sudoers 파일의 내용을 확인하십시오. 아마도'user NOPASSWD : su - john'과 같은 것을 읽을 수있는 항목이있을 것입니다. 이것은 명령을 내릴 수는 있지만 매개 변수는 사용할 수 없다는 것을 의미합니다. 그래도 수퍼 유저 질문 일뿐입니다. – Petesh

답변

1

우선, -은 로그인 쉘을 원한다는 것을 의미합니다. 첫 번째 문장은 root로 (그러므로 sudo), 로그인 한 상태에서 john으로 나타나기를 원한다는 것을 의미합니다. 현재 로그인 한 사용자가 암호를 사용하지 않고 sudo를 수행 할 수있는 권한을 가지고있는 경우가 있습니다. 첫 번째 인스턴스에 어떻게됩니까

는 하나 개의 명령이 su - john (john 나를 로그인 "을 의미)을 실행한다는 것입니다, 당신은 (당신이 먼저 sudo를 넣어부터). 루트로 현재 사용자가 sudo는 -없이 - 암호가 그렇게 -rights, root가 임의의 사용자가 될 수있는 권한이 있습니다

두 번째 시도가 잘못되었습니다. su을 사용하여 명령을 실행하면 단일 명령을 실행할 수 있습니다. 로그인 셸이 될 이유가 없습니다

세 번째 옵션에서 현재 로그인 한 사용자는 하나의 명령에 대해 john이 되려고합니다. john 암호가 필요합니다. (당신이 root로이 작업을 수행 할 때, 그러나, 당신은 암호를 입력 할 필요가 없습니다.)

을 당신이 아마 찾고

sudo su --command="/usr/share/script_to_run.pl" john 

또는 어쩌면 더 이국적인을 시도 할 수 작동하려면

sudo sudo -u john /usr/share/script_to_run.pl 
+0

이 두 옵션 모두 암호 요청을 내게 요청합니다. – Cratylus

+0

흥미 롭습니다. 현재 어떤 사용자로 로그인하고 있습니까? 어떤 OS를 실행하고 있습니까? – Bex

+0

사용자 'george'.OS가 centos로 로그인했습니다. – Cratylus

0

"sudo"는 "su"의 모든 기능을 제공하도록 설계되었지만 다른 사용자의 암호를 사용하도록 요구하지 않았습니다. 필요한 대답은/etc/sudoers 파일에 있으며 "sudo visudo"명령으로 편집 할 수 있습니다.

cratylus ALL=(ALL)  NOPASSWD: ALL 

거기서

sudo -u cratylus the statement 

메모와 함께 쿼리를 제출 : 여기 당신이 당신의 사용자가 암호를 필요로하지 만들 수 있다는 것을 발견 할 것이다 - 당신은 단지 "SU에 대해 이렇게 말씀을 인용하지 않는다 -c "명령을 사용하십시오.

관련 문제