비밀번호없이 다른 사용자에게 sudo 허용


46

특정 사용자에게 '스와'를 사용하여 비밀번호를 입력하지 않고도 명령을 실행할 수 있기를 원합니다.

예를 들면 다음과 같습니다.

내 로그인이 user1이고 'su'하려는 사용자가 user2 인 경우 :

다음 명령을 사용합니다.

su - user2

그러나 그것은 나에게 프롬프트

Password:


다른 사용자에게 비밀번호를 요청하십시오. 적어도 다른 사용자는 자신의 ID로 수행 된 작업을 알고 있습니다.
글로벌 유목민

1
이것은 다른 물리적 사용자와는 아무런 관련이 없습니다. 두 ID는 모두 내 것입니다. 계정을 만들 때 비밀번호를 알고 있습니다. 매번 암호를 입력하고 싶지는 않습니다.
zio

사용자에게 ssh를 사용하는 것이 좋습니까? 특히 하나의 쉘을 상속해야하며 작동하려면 su가 필요합니까?
bmike

1
@zio 훌륭한 사용 사례. 당신 open -na Skype을 위해 작동하지 않습니까?
bmike

답변:


66

sudo 당신을 위해 그냥 할 수 있습니다 :)

그래도 약간의 구성이 필요하지만 일단 완료하면 다음과 같이하십시오.

sudo -u user2 -s

그리고 비밀번호를 입력하지 않고 user2로 로그인합니다.

구성

sudo를 구성하려면 다음을 통해 구성 파일을 편집해야합니다 visudo. 참고 :이 명령은 vi텍스트 편집기를 사용하여 구성을 엽니 다. 불편한 경우 export EDITOR=<command>다음 행을 실행하기 전에을 사용하여 다른 편집기를 설정해야합니다 . 때때로 더 쉬운 것으로 간주되는 또 다른 명령 행 편집기 nanoexport EDITOR=/usr/bin/nano있습니다. 일반적으로 다음에 대한 수퍼 유저 권한이 필요합니다 visudo.

sudo visudo

이 파일은 다른 섹션, 별명, 기본값으로 구성되며 마지막에는 규칙이 있습니다. 여기에 새 줄을 추가해야합니다. 따라서 파일 끝에서 탐색하여 다음을 추가하십시오.

user1    ALL=(user2) NOPASSWD: /bin/bash

또한 대체 할 수 있습니다 /bin/bash에 의해 ALL다음은 암호없이 사용자 2와 같은 명령을 실행할 수있다 : sudo -u user2 <command>.

모든 사용자로 전환하려면 다음을 사용하십시오.

user1    ALL=(ALL) NOPASSWD: /bin/bash

최신 정보

Skype에 대한 귀하의 의견을 방금 봤습니다. sudo의 구성 파일에 Skype를 직접 추가하는 것을 고려할 수 있습니다. Skype가 응용 프로그램 폴더에 설치되어 있다고 가정 합니다.

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

그런 다음 터미널에서 전화를 겁니다.

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

이것은 ssh 키 아이디어보다 훨씬 덜 복잡하므로 원격 액세스를 위해 ssh 키가 필요하지 않은 경우 이것을 사용하십시오.
bmike

2
보안 관점에서 주목할 점은 특정 명령을 지정하면 user1에 대한 읽기 전용 명령이어야 함을 의미합니다. 그렇지 않으면 명령을 다른 것으로 덮어 쓰고 user2로 실행할 수 있습니다. 당신이 걱정하지 않는 경우에, 당신은뿐만 아니라 그 USER1 실행할 수 지정할 수 있는 간단한 sudo는 설정을 가지고 있으므로 사용자 2로 명령을합니다.
Stan Kurdziel

@StanKurdziel 좋은 지적! 알고 있어야 할 내용이지만 루트가 아닌 경우 사용자가 시스템 실행 파일을 쓸 수있는 경우는 거의 없지만 실제로는 sudo가 필요하지 않습니다. 아마 한 번 이상 간과했을 것입니다.
Huygens

행동에 가까이를 얻으려면 su - user2대신 su user2, 명령은 아마 모두 포함해야 sudo -u user2 -i사용자 2로 초기 로그인 시뮬레이션하기 위해,
버그 덴 거트 밴을

4

두 번째 계정에 공개 / 개인 ssh 키를 설정하고 첫 번째 계정에 키를 저장합니다.

그런 다음 다음과 같은 명령을 실행할 수 있습니다.

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

하나의 사용자 계정에서 두 개의 인스턴스가 실행 중이고 해당 프로그램에서 읽거나 쓰는 파일이 충돌 할 수 있기 때문에 Skype가 혼동되는 문제가 계속 발생합니다. 또한 필요에 따라 충분히 작동 할 수 있으며 두 번째 Skype 인스턴스를 실행하기 위해 iPod touch가 필요하지 않습니다.


1
이것은 모든 호스트의 모든 계정에 암호없이 로그인하는 일반적인 경우에 대한 안전한 솔루션이지만 두 계정이 동일한 호스트에 있고 동일한 사용자에게 속할 경우 아마 너무 과잉이라고 말하고 싶습니다.
calum_b

@scottishwildcat 암호를 스크립팅하여 일반 텍스트로 입력하거나 변수를 사용하고 키 체인에 암호를 저장 expect하고 상호 작용을 스크립팅하는 것과 같은 도구를 사용하는 것보다 훨씬 안전 합니다. sudo su - blah비밀번호를 사용 하고 입력합니다. 다른 답변은 이것을 sudo로 유지하기에 충분하다고 생각합니다.
bmike

오, 나는 확실히 당신의 대답이 제거되어야한다고 제안하지 않았습니다…
calum_b

우리는 완전히 동의 한 것으로 보입니다-추가 덕분에 개선 할 수 있다면 답변으로 자유롭게 편집하십시오.
bmike

허용 된 솔루션 ( sudo -u user2 <...>)은 원격으로 사용할 수 없다는 이점이있어 보안에 도움이 될 수 있습니다. 도난 될 수있는 user1의 개인 키는 없습니다.
게르트 반 덴 버그
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.