리눅스 사용자가 현재 비밀번호를 몰라도 비밀번호를 변경할 수 있습니까?


25

몇 개의 ubuntu상자를 설정하고 opscode를 chef구성 도구로 사용하고 있습니다. 이러한 각 서버에서 각 사용자의 공개 키를 설치하고 암호 인증을 비활성화하는 것은 매우 쉽습니다.

그러나 사용자에게는 sudo기본적으로 암호가 필요한 권한 도 있어야 합니다.

사용자의 공개 키를 액세스 관리 방법으로 사용하고 사용자 sudo권한을 허용하려면 NOPASSWD: ALLin을 사용 하여 사용자를 설정해야 visduo하거나 사용자가 자신의 암호를 변경할 수있는 방법이 있습니까? 공개 키 인증 만 있습니까?



@sr-이것이 이것을하는 주류 방법 인 것 같지 않습니다 ...
cwd

왜 사용자가 sudo 권한을 갖기를 원합니까? 이것에 의해 당신이 루트 액세스를 제공한다는 것을 알고 있기를 바랍니다. 여기에 약간의 시간을 투자하고 sudo와 관련하여 명령의 하위 세트 만 사용하도록 허용 할 수도 있습니다 (어쩌면 덜 안전 할 수도 있음). Go man sudoers는 사용자 비밀번호 없이도 sudo로 특정 명령을 실행할 수 있다는 정보를 제공합니다. / etc / sudoers에 쉘 스크립트를 추가하여 사전 비밀번호없이 사용자 별 "자체 비밀번호"설정을 허용 할 수도 있습니다.
humanandANDpeace

@humanityANDpeace-나는 이것을 깨달았다. 우리 팀원 모두는 우리가 유지 관리하는 클라우드 서버에 대한 루트 액세스 권한이 필요합니다. 현재 요리사를 사용하여 사용자의 공개 키를 관리 NOPASSWD: ALL하고 있으며 팀 구성원이 속한 sysadmin 그룹 이 있습니다. 더 나은 솔루션을 제안 할 수 있다면 답변으로 게시하십시오.
cwd

답변:


21

가장 일반적인 구성에서 Sudo를 사용하려면 사용자가 비밀번호를 입력해야합니다. 일반적으로 사용자는 이미 비밀번호를 사용하여 계정을 인증했으며 비밀번호를 다시 입력하면 합법적 인 사용자가 콘솔을 버리지 않고 도용 당했음을 확인할 수 있습니다.

설정에서 사용자의 비밀번호는 sudo 인증에만 사용됩니다. 특히 사용자의 SSH 키가 손상되면 공격자는 서버에서 루트 권한으로 상승 할 수 없습니다. 공격자는 키 로거를 계정에 배치 할 수 있지만이 키 로거는 다른 사용자가 탐지 할 수 있으며 자동으로 감시 할 수도 있습니다.

일반적으로 사용자는 다른 비밀번호로 변경하려면 현재 비밀번호를 알고 있어야합니다. passwd이를 검증 프로그램은 (는하지 않도록 구성 할 수 있지만,이 유용 또는 시나리오의 모든 바람직한에 있지). 그러나 root는 이전 비밀번호를 몰라도 사용자의 비밀번호를 변경할 수 있습니다. 따라서 sudo 권한을 가진 사용자는 passwd프롬프트 에서 비밀번호를 입력하지 않고도 자신의 비밀번호를 변경할 수 있습니다 sudo passwd $USER. sudo사용자 비밀번호를 요구하도록 구성된 경우 사용자는 비밀번호를 입력해야 sudo합니다.

비밀번호 인증을 선택적으로 비활성화 할 수 있습니다. 상황에 따라 ssh 및 다른 서비스에서 비밀번호 인증을 사용하지 않을 수 있습니다. Ubuntu를 포함한 대부분의 최신 유니스에있는 대부분의 서비스는 PAM 을 사용 하여 인증 방법을 구성합니다. Ubuntu에서 PAM 구성 파일은에 /etc/pam.d있습니다. 비밀번호 인증을 비활성화하려면의 auth … pam_unix.so행을 주석 처리하십시오 /etc/pam.d/common-auth. 또한, 물론 당신은이 있는지 확인 PasswordAuthentication no에서 /etc/ssh/sshd_config사용 안 함 SSHD의 내장에서 암호 인증합니다.

일부 관리 사용자가 비밀번호로 로그인하거나 콘솔에서 비밀번호 인증을 허용하도록 할 수 있습니다. 이것은 PAM (매우 유연합니다)으로 가능하지만, 나는 머리 꼭대기에서 어떻게 떨어져 있는지 말할 수 없었습니다. 도움이 필요하면 별도의 질문을하십시오.


SSH 키 인증과 함께 PAM을 사용하는 편리한 방법 중 하나는 pam_ssh_agent_auth 를 사용하는 것입니다.이 프롬프트는 SSH가 사용할 수있는 (이론적으로 훨씬 더 안전한) 키 인증으로 비밀번호 프롬프트를 대체 할 수있는 장점이 있습니다.
Tobias Kienzler

그래서 sudo passwdsudo 사용자가 아닌 현재 사용자의 비밀번호를 변경 한다고 말하고 있습니까?
still_dreaming_1

1
@ still_dreaming_1 아니요, 명령을 실행할 수있는 사용자 sudo는 자신의 암호를 변경할 수 있습니다. 정확한 명령은 정말 중요하지 않습니다,하지만 더 세부 사항으로 이동하기 위해서는 될 sudo passwd bob경우 bob사용자의 이름, 또는 뭔가 동일합니다. 인수 sudo passwd가 없으면 실제로 root의 비밀번호를 변경합니다.
Gilles 'SO- 악마 그만해'

7

pam_ssh_agent_auth 모듈을 사용할 수 있습니다 . 컴파일하는 것이 매우 간단하고 항목을 추가하기 만하면됩니다.

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

다른 auth(또는 include) 항목 앞에/etc/pam.d/sudo

Defaults    env_keep += "SSH_AUTH_SOCK"

까지 /etc/sudoers(를 통해 visudo)

이제 모든 사용자는 sudo(전달 또는 로컬) SSH 에이전트 또는 비밀번호 를 통해 인증 할 수 있습니다 . ssh-add -csudo호출에 최소한 확인이 필요하도록 사용자에게 사용하도록 요청하는 것이 좋습니다 .


관련 문제에는 pam_ssh 가 있습니다. 로그인을 위해 유닉스 암호 대신 SSH 암호를 사용하여 에이전트를 자동으로 시작하고 키를 추가하여 싱글 사인온 가능성을 제공합니다.
Tobias Kienzler

1

예, 믿을 수 없을 정도로 안전하지 않으며 사용자가 다른 사용자의 비밀번호에 액세스 할 수 있지만 sudo가 있기 때문에 할 수있는 일은 많지 않습니다.

기본적으로 다음을 수행합니다.

$ sudo -i

이제 우리는 뿌리입니다. 우리는 모든 것에 접근 할 수 있습니다.

# passwd $username

$ username은 누구나 사용할 수있는 사용자 이름입니다.

새 UNIX 비밀번호를 입력하십시오.

새 UNIX 비밀번호 다시 입력 : passwd : 비밀번호가 성공적으로 업데이트되었습니다

붐, 비밀번호가 변경되었습니다. 다시 말하지만, 누군가를 바꿀 수 있기 때문에 믿을 수 없을 정도로 안전하지 않지만 작동하지만 작동합니다. 나는 그것을 추천 아니라 무엇의 예로서이 답변을 제공하지 않습니다 하지 수행하는.


좋아 보이지만 여기서 무슨 일이 일어나고 있는지 자세히 설명해 주시겠습니까?
cwd

4
sudo -i현재 사용자 비밀번호 없이는 할 수 없습니다.
kravemir

@ 미로 당신이 말하는대로입니다. 파일 sudo bash에서 그렇게 설정하면 여전히 암호가 없을 수 있습니다 /etc/sudoers. 내가 말했듯이 @jrg 여기에 더 sudo를 불안 문제에 초점을 생각
humanityANDpeace

1
솔직히, 당신은 할 필요가 없습니다 sudo -i, 당신은 sudo passwd $username@Miro 로 바로 이동할 수 있습니다 , 당신은 현재 사용자 비밀번호를 알 필요가 없습니다. sudo를 사용하려면 루트 비밀번호 만 알아야합니다
Antony

0

암호의 요점은 사용자 키를 얻거나 무인 터미널을 찾는 해커가 루트 액세스 권한을 얻을 수 없도록하는 것입니다. 이러한 이유로 암호가없는 sudo가 포함 된 솔루션은 권장하지 않습니다.

아마 빨리 변경하는 사용자에게 엄격한 지침에 기본 암호를 이메일, 또는 다른 자신의 스크립트를 삽입 : 나는 당신이 간단하게 제안 .profile또는 .login그들의 첫 번째 로그인에 새 암호를 요구하도록 또는 뭔가. 완료되면 자체적으로 비활성화 될 수 expect있으며 기존 비밀번호를 입력하여 알 필요가 없습니다.


0
#% useradd -g somegroup someuser
#% usermod -p "" someuser
#% chage -d 0 someuser
#% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config
#% /sbin/service sshd restart
#% cp -r ~/.ssh `echo ~someuser`
#% chown -R someuser `echo ~someuser`/.ssh
#% chgrp -R somegroup `echo ~someuser`/.ssh
#% echo "%somegroup  ALL=(ALL)   ALL" >> /etc/sudoers

> 공개 키로 만 로그인 할 수 있고 로그인에 비밀번호를 사용할 수없는 사용자가 있어야합니다. 그러나 그는 처음 로그인 할 때 비밀번호를 변경해야하지만 ... 비밀번호를 미리 알려주지 않아도됩니다 ... 사용자는 단순히 비밀번호를 재설정하라는 메시지가 표시되며 이후에는 sudo에만 사용할 수 있습니다 해당 비밀번호를 사용하여 로그인 (ssh) 할 수 없습니다. 여기서의 트릭은 사용자에게 암호를 변경해야 할 때 로그인 할 때 입력해야 할 더미 암호를 알려주지 않는 것입니다 ... 너트 셸에서는 admin (root)에서 통신이 없습니다. 실제 사용자에게 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.