su
コマンドを使用してユーザーを切り替え、ファイルにパスワードを追加する方法は?手動でパスワードを入力するのではなく、ユーザーとパスワードを自動的に切り替えるスクリプトを作成したいと思います。 PS:スーパーユーザー権限がありません。
答え1
最善の方法は、Sudoルールを使用することです。
テキストファイルにセキュリティパスワードを使用することは、10の悪い習慣の1つです。しかし、これを使用するには、 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
管理者にインストールを依頼したり、ソースからコンパイルしたり、ディレクトリから実行したりするのがはるかに困難です。