Sudo가 아닌 터미널 명령을 실행하려면 사용자에게 사용자 비밀번호를 묻는 메시지를 표시합니다.

Sudo가 아닌 터미널 명령을 실행하려면 사용자에게 사용자 비밀번호를 묻는 메시지를 표시합니다.

sudo가 아닌 명령에서 사용자에게 비밀번호를 묻는 메시지를 표시하는 방법을 알고 싶습니다.

편집하다:

댓글로는 명확하게 알 수 없을 것 같아서 예를 들어 요청을 자세히 설명하겠습니다. 예를 들어 터미널을 열고 "ls -l" 명령을 입력하면 Enter 키를 누른 후 사용자 비밀번호 sudo가 아닌 모든 주문을 원합니다.

답변1

일반적으로 섀도우 파일의 비밀번호 해시에 대한 액세스가 부족하면 시스템 비밀번호 데이터베이스를 사용하는 임의의 사용자 공간 프로그램에 대해 이 요청이 문제가 될 수 있습니다. 섀도우 파일에 대한 액세스를 실행할 수 있도록 setuid 비트를 설정하는 sudo경향이 있기 때문입니다 .chshroot

[jdoe@centos ~]$ id -u
1001
[jdoe@centos ~]$ perl -E 'say for getpwuid(1001)'
jdoe
x
1001
1001



/home/jdoe
/bin/bash
[jdoe@centos ~]$ sudo perl -E 'say for getpwuid(1001)'
jdoe
$6$P1jejm1i$bo02c/...
1001
1001



/home/jdoe
/bin/bash
[jdoe@centos ~]$ 

프로그램이 사용자의 비밀번호 해시를 얻을 수 있으면(시스템 데이터베이스 또는 $6$P1jejm1i$bo02c/...위 출력에서 ​​편집된 비트인 다른 소스로부터),비밀번호를 확인하려면 기존 crypt(3)통화만으로 충분합니다..

암호 프롬프트를 표시하지 않는 것 외에도 암호 프롬터는 코어 덤프를 방지하고, 자체적으로 메모리에 잠그고, 이후에 다양한 메모리 비트를 정리하고, 다양한 신호를 무시하고, setuid가 실행되는 경우 더 엄격한 검사를 수행하기를 원할 수도 있습니다. OpenBSD에서는 이러한 단계 중 일부를 쉽게 수행할 수 있지만 다른 운영 체제에는 "LEGACY" readpassphrase(3)라고 표시된 것이 많지 않습니다 .getpass(3)

관련 정보