ファイルのパスワードを使用してユーザーを切り替える

ファイルのパスワードを使用してユーザーを切り替える

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管理者にインストールを依頼したり、ソースからコンパイルしたり、ディレクトリから実行したりするのがはるかに困難です。

関連情報