파일의 비밀번호를 사용하여 사용자 전환

파일의 비밀번호를 사용하여 사용자 전환

su명령을 사용하여 사용자를 전환하고 파일에서 비밀번호를 추가하는 방법은 무엇입니까 ? 수동으로 비밀번호를 입력하는 대신 사용자와 비밀번호를 자동으로 전환하는 스크립트를 만들고 싶습니다. 추신: 슈퍼유저 권한이 없습니다.

답변1

가장 좋은 방법은 Sudo 규칙을 사용하는 것입니다.
텍스트 파일에 보안 비밀번호를 사용하는 것은 10가지 나쁜 습관 중 하나입니다. 하지만 이를 사용하려면 parwd를 stdin이 아니라 ftom tty에서 읽어야 한다는 점을 기억해야 합니다. 따라서 expect(*1)을 사용할 수 있지만 여전히 잘못된 방법입니다. 더 나은 옵션은 sudo 또는 sshkey를 사용하는 것입니다. 로컬 호스트 주소의 공개 키를 사용하여 SSH 계정에 로그인할 수 있습니다.

시도하지 마세요 su - username <<< password

또는

    su username << - _EOF_ 
    you_password 
    whoami
    _EOF_

이는 다른 쉘에서만 명령을 실행하고 출력을 제공합니다.

*1https://stackoverflow.com/questions/29174337/trouble-logging-in-user-using-su-and-expect-script

답변2

일반적으로 이와 같은 프로그램은 su터미널에 비밀번호가 필요하므로 우회할 수 없습니다. 사용자는 root비밀번호를 입력하지 않고도 다른 비밀번호로 전환할 수 있으므로 유사한 비밀번호가 일반적입니다 sudo su user.

그러나 우리는 속일 수 있습니다. expect시스템에서 해당 명령을 사용할 수 있는 경우 다음을 수행할 수 있습니다.서서히 나아가는암호를 입력

#!/usr/bin/expect -f

set user [lindex $argv 0]
set password [lindex $argv 1]

spawn /bin/su $user

expect "Password:"
send "$password\r";

interact

이 앱으로 할 수 있는 일

./autosu username password

예를 들어

% autosu root imnottellingyou
spawn su root
Password: 
[root@server /]# 

그러나 명령줄에 비밀번호를 입력하면 해당 비밀번호가 쉘 기록에 나타나기 때문에 이는 일반적으로 좋은 생각이 아닙니다. 하지만 스크립트나 데이터 파일에 비밀번호가 있으면 문제가 되지 않습니다! 이 간단한 예제를 필요에 맞게 수정할 수 있어야 합니다.

아직 설치 하지 않았다면 expect관리자에게 설치를 요청하거나 소스에서 컴파일하고 디렉터리에서 실행하는 것이 훨씬 더 어렵습니다.

관련 정보