GNU/Linux >> Linux の 問題 >  >> Linux

initスクリプトで特定のユーザーとしてコマンドを実行する方法は?

start-stop-daemon がある場合

start-stop-daemon --start --quiet -u username -g usergroup --exec command ...

systemd スタイルの init スクリプトの場合は非常に簡単です。 [Service] セクションに User=を追加するだけです。

CentOS 7 で qbittorrent-nox に使用する init スクリプトは次のとおりです。

[Unit]
Description=qbittorrent torrent server

[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort

[Install]
WantedBy=multi-user.target

RHEL システムでは、/etc/rc.d/init.d/functions スクリプトは、必要なものと同様のものを提供することを目的としています。 init スクリプトの先頭でそれをソースすると、すべての機能が利用可能になります。

これを支援するために提供される特定の関数は daemon です .これを使用してデーモンのようなプログラムを開始する場合、簡単な使用方法は次のとおりです:

daemon --user=username command

それがあなたが必要とするものに対してあまりにも手荒すぎるなら、 runuser があります (man runuser を参照) 詳細については;バージョンによっては -u が必要な場合があります ユーザー名の前):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

sudo の代わりに 、試してみてください

su - username command

私の経験では、sudo RHEL システムでは常に利用できるとは限りませんが、su suだからです は coreutils パッケージの一部ですが、sudo sudo パッケージにあります。


Linux
  1. Linuxでユーザーがログインする前にコマンドを実行する方法は?

  2. スクリプトを実行する方法??

  3. コマンドラインでスクリプトから関数を実行するにはどうすればよいですか?

  1. Linuxでユーザー名を変更する方法

  2. Linuxコマンドのスクリプトを作成する方法

  3. Unix/Linux で特定のユーザーが作成したプロセスを確認する方法

  1. CentOS / RHEL :特定のコマンドを実行しているユーザーを見つける方法は?

  2. sudo を使用して非 root ユーザーが特定のコマンドを実行できるようにする方法

  3. Linux で特定のユーザーに対して特定のコマンドを無効にする方法