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
관리자에게 설치를 요청하거나 소스에서 컴파일하고 디렉터리에서 실행하는 것이 훨씬 더 어렵습니다.