보안 위험이 있다는 것을 알고 있지만 집에 거의 사용하지 않는 오래된 *nix 시스템에서 이 실험/연습을 수행하고 있습니다. 따라서 이 연습을 수행해도 내 컴퓨터에 보안 위험이 발생하지 않습니다. 그렇긴 하지만, 안전에 관해 어떤 언급도 하지 마세요.
또한 비밀번호 프롬프트를 비활성화하도록 변경할 수 있다는 것도 알고 있지만 sudoers
거기에는 관심이 없습니다.
다음 명령을 찾았습니다.
echo "password" | sudo -S su
그런데 효과가 이상해요. 도메인 이름을 입력하면 루트가 되지 않습니다. 내가 뭔가를 놓치고 있는 걸까요? 아니면 더 좋은 방법이 있나요?
내가 한 일들:
\n
추가됨: 비밀번호 끝 부분에 잘못된 비밀번호 확인이 있습니다.- 생략
su
:sudo
올바른 사용법을 인쇄하여 기재하세요.
답변1
이상하지만 이것은 나에게 효과적입니다.
% echo -e "password\n" | sudo -S su
<myusername>'s password:HOSTNAME: Undefined variable.
% sudo -S su
따라서 첫 번째 실행에서는 비밀번호가 전달되고 sudo
( -e
플래그가 에코되어 \n
실제로 줄 바꿈임) 두 번째 실행에서는 비밀번호를 묻지 않고 인증이 수행됩니다.
(두 번째 줄의 반환은 부적절한 시스템 설정으로 인한 것일 수 있습니다...)
sudo -S <command>
편집: 해당 xterm 세션에서는 원하는 만큼 여러 번 호출 할 수 있습니다 . 이는 sudo 비밀번호를 한 번만 입력하면 되는 시간 제한 내에 있기 때문일 수 있습니다.
답변2
나는 다음을 사용했다
echo password | sudo -S su - user_to_switch_to
그런 다음 실행
sudo -S su - user_to_switch_to
비밀번호를 직접 입력하지 않고 원하는 사용자로 전환하세요.
(password 및 user_to_switch_to를 귀하의 비밀번호 및 사용자로 바꾸십시오.)
답변3
I/O 리디렉션을 수행하는 동안 su(및 친구들)의 대화형 쉘을 실행하려고 한다는 느낌이 듭니다. 나는 이것이 작동하지 않을 것이라고 생각합니다. echo passwd|
즉, 비밀번호 뒤에 eof (파일 끝)가 표시됩니다. 내 생각에는 Expect나 전화 접속 스크립트 유틸리티 같은 것이 필요할 것 같습니다. Expect에는 스크립트 끝에서 호출할 수 있는 통과 모드가 있습니다. 명령이 xterm(완전히 대화식이지만 표준 입력이 필요하지 않음)처럼 대화식이 아닌 경우에는 필요하지 않습니다. 또한 표준 오류에서 읽은 일부 비밀번호에 주목하세요. 이는 아무리 말해도 흥미로운 일이 아닙니다. (이렇게 하면 i/o 리디렉션이 비밀번호 프롬프트를 방해할 가능성이 줄어듭니다.)