2012-08-30 4 views
2

명령을 실행하려면 su 명령을 사용해야하는 bash 스크립트를 작성하고 있습니다. 스와 -c "루트 암호로 입력하세요"에코 "는 XYZ 시스템 설치"this-su 암호로 입력 한 문자를 볼 수있는 방법이 있습니까

에코와 같은 뭔가 "자바 -cp ./Installer.jar com.company.FmMain, 출구"

사용자가 암호를 입력 할 때 시각적 피드백을 갖도록 su 인쇄 문자 (별표 또는 기타)를 사용할 수 있습니까?

+0

예. "su"의 소스를 잡고 다시 작성하여 사용자가 피드백하도록하십시오. –

+0

대신 gksu 또는 gksudo를 사용해보세요. – robbrit

+0

표준 명령이 있다고는 생각하지 않지만 superuser.com에 대한 추가 도움말을 찾을 수 있습니다. – teppic

답변

1

먼저 암호를 su 외부의 변수로 읽어야합니다. 이를 달성하기 위해 read을 사용하는 예는 How do I echo stars (*) when reading password with `read`?을 참조하십시오.

그런 다음 expect을 사용하여이 암호를 su이 제공하는 암호 프롬프트에 전달해야합니다. 유사한 일을하는 예는 How do I use expect to connect via ssh to a system and change the password of the host system? 질문을 참조하십시오.

+0

훌륭합니다, 정말 고마워요. 그 링크는 내가 찾고있는 것입니다. – SystemCalls

1

리눅스에서 암호를 마스킹하는 것을 권장하지는 않습니다. 정상적인 동작을 기대하지 않으며, 특히 Linux 사용자가 경험이 많은 사용자에게 혼동을 줄 수 있습니다. 패스워드를 읽는 표준 방법은 패스워드를 받아들이 기 전에 echo와 escape sequence와 같은 특수 문자의 처리를 멈추는 것입니다 (이것은 일반적으로 터미널 속성 -tcsetattr 등을 설정함으로써 이루어집니다). 이것은 su가 작동하는 방식입니다. http://www.gnu.org/s/hello/manual/libc/getpass.html

이 잠재적 인 보안 implimentations을 가지고 일을 자신의 방법을 구현하기 위해 노력 :

는 당신을 위해이 작업을 수행 getpass 같은 표준 라이브러리 함수가 있습니다. 나는 강력하게 이것을 경고 할 것이다.

관련 문제