sudo가 아닌 명령에서 사용자에게 비밀번호를 묻는 메시지를 표시하는 방법을 알고 싶습니다.
편집하다:
댓글로는 명확하게 알 수 없을 것 같아서 예를 들어 요청을 자세히 설명하겠습니다. 예를 들어 터미널을 열고 "ls -l" 명령을 입력하면 Enter 키를 누른 후 사용자 비밀번호 sudo가 아닌 모든 주문을 원합니다.
답변1
일반적으로 섀도우 파일의 비밀번호 해시에 대한 액세스가 부족하면 시스템 비밀번호 데이터베이스를 사용하는 임의의 사용자 공간 프로그램에 대해 이 요청이 문제가 될 수 있습니다. 섀도우 파일에 대한 액세스를 실행할 수 있도록 setuid 비트를 설정하는 sudo
경향이 있기 때문입니다 .chsh
root
[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)