ローカルサーバーとSSH実行でスクリプトを実行するには、2つの提案が必要です。
1. sudoerのアップデート方法
サーバーにはパスがあります
/var/log/データ/ステータス/
Parent と Child_dir のすべてのファイルは tomcat ユーザーとグループによって所有されます。
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221119.status
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221116.status
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221112.status
new_userというユーザーが私のスクリプトの一部として/var/log/data/status/の下のファイル名を変更できるようにしたいです。以下のようにsudoersファイルを編集しようとしましたが、tomcatはパスワードのないアプリケーションユーザーであるため、パスワードなしで実行されます。 sudoersを変更する方法がわからない。
new_user ALL=NOPASSWD: /bin/bash /path/my_script [a-z_]* 20[0-9]*
私が達成したいのは、パスワードなしで実行することです。
sudo -u new_user /bin/bash /path/my_script
2. SSH経由でスクリプトを実行する
私の他の要件は、SSHを介して別のサーバーで同じスクリプトを実行することです。可能であれば構文を助けてください。
- サーバーA(マイユーザーiamsageとしてログイン) -
こんなことを実行しなければなりません。
ssh new_user@remote_host "sudo -u new_user /path/my_script arg1 arg2"
答え1
配線sudoers
が正しくありません。この試み
your_user ALL=(new_user) NOPASSWD: /path/my_script
次に、スクリプトが実行可能で、#!/bin/bash
最初の行があることを確認します。
リモート通話提案の大きな問題は、新しいユーザーとしてログインしようとするため、それを使用する必要がないことですsudo
。次のいずれかを試しても混在しないでください。
ssh remote_host sudo -u new_user /path/my_script arg1 arg2
ssh new_user@remote_host /path/my_script arg1 arg2
どちらの場合も、リモート実行のためにコマンド全体を引用することは完全に可能ですが、ここではそうではありませんでした。