web-dev-qa-db-ja.com

「sudo su-user」コマンドの自動化

自動化したい

Sudo su - user 

スクリプトから。次に、パスワードを要求する必要があります。

5
sam

私はあなたが尋ねたものを試して推測します。

パスワードなしでSudo su - userを使用する場合は、(特権がある場合)sudoersファイルに対して次のことを行う必要があります。

<youuser>  ALL = NOPASSWD: /bin/su - <otheruser>

どこ:

  • <yourusername>はあなたのユーザー名です:D(saumun89、つまり)
  • <otheruser>は変更先のユーザーです

次にスクリプトに入れます:

Sudo /bin/su - <otheruser>

これを行うと、後続のコマンドが<otheruser>によって実行されることはなく、新しいシェルが生成されます。この他のユーザーとしてスクリプト内から別のコマンドを実行する場合は、次のようなものを使用する必要があります。

 Sudo -u <otheruser> <command>

そしてsudoersファイルで:

<yourusername>  ALL = (<otheruser>) NOPASSWD: <command>

明らかに、次のようなより一般的な行:

<yourusername> ALL = (ALL) NOPASSWD: ALL

物事を成し遂げますが、誰とでも何でもする許可を与えます。

8
Torian

コマンドを使用できます

 echo "your_password" | Sudo -S [rest of your parameters for Sudo]

(もちろん[と]なし)

許可されていないユーザーからの読み取りアクセスからスクリプトを保護する必要があることに注意してください。別のファイルからパスワードを読み取りたい場合は、

  Sudo -S [rest of your parameters for Sudo] < /etc/Sudo_password_file

(または、パスワードと単一の改行を含むパスワードファイルの名前は何でもかまいません。)

須藤のmanページから:

   -S          The -S (stdin) option causes Sudo to read the password from
               the standard input instead of the terminal device.  The
               password must be followed by a newline character.
3
Olli

最も簡単な方法は、ユーザーがパスワードをまったく入力する必要がないようにすることです。

これを行うには、visudoを実行してから、次のような行を変更します。

someuser  ALL=(ALL) ALL

someuser  ALL=(ALL) NOPASSWD: ALL

ただし、1つのスクリプトのみの場合は、パスワードなしのアクセスをそのスクリプトのみに制限し、(ALL)を削除して、rootとしてのみ実行できるようにし、ユーザーは実行できないようにする方が安全です。

Cmnd_Alias THESCRIPT = /usr/local/bin/scriptname

someuser  ALL=NOPASSWD: THESCRIPT

man 5 sudoersを実行して、 sudoersのマニュアルページ のすべての詳細を確認します。

1
Mikel

Root以外のアカウントのログイン資格情報を保存したPuTTYまたはmobaを介してシェルセッションにログインする場合、PuTTYまたはmobaによるログイン時に実行されるこのコマンドを追加するだけで、rootへのアクセスがすぐに切り替わります。

echo "PASSWORD" | Sudo -S su - && Sudo su

1
Andy

または、python pudo package: https://pypi.org/project/pudo/1.0.0/ を使用することもできます

インストール:

user$ Sudo -H pip3 install pudo # you can install using pip2 also

以下は、root権限でcmdを実行するためのpython自動化で使用するためのコードスニピットです::

user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'

以下は、ルート権限でコマンドを実行するためのコマンド例です

user$ pudo ls /root
Desktop  Downloads  Pictures  Music
0