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

Linux サービスを別のユーザーとして実行するためのベスト プラクティス

ここにあるすべての提案を見た後、私の立場にある他の人に役立つと思われるいくつかのことを発見しました:

<オール>
  • /etc/init.d/functions に戻るように指示するホップは正しい :daemon 機能ではすでに代替ユーザーを設定できます:

    daemon --user=my_user my_cmd &>/dev/null &
    

    これは、プロセス呼び出しを runuser でラップすることによって実装されます -これについては後で詳しく説明します。

  • Jonathan Leffler は正しい:Python には setuid があります:

    import os
    os.setuid(501) # UID of my_user is 501
    

    ただし、JVM 内から setuid できるとはまだ思えません。

  • su でもありません runuser でもありません すでに使用しているユーザーとしてコマンドを実行するように要求する場合を適切に処理します。例:

    [[email protected]_host]$ id
    uid=500(my_user) gid=500(my_user) groups=500(my_user)
    [[email protected]_host]$ su my_user -c "id"
    Password: # don't want to be prompted!
    uid=500(my_user) gid=500(my_user) groups=500(my_user)
    
  • su の動作を回避するには と runuser 、init スクリプトを次のように変更しました:

    if [[ "$USER" == "my_user" ]]
    then
        daemon my_cmd &>/dev/null &
    else
        daemon --user=my_user my_cmd &>/dev/null &
    fi
    

    助けてくれてありがとう!


    Debian では start-stop-daemon を使用します pid ファイルの処理、ユーザーの変更、デーモンのバックグラウンド化などを行うユーティリティです。

    RedHat には詳しくありませんが、daemon すでに使用しているユーティリティ (/etc/init.d/functions で定義されています) 、ところで) start-stop-daemon と同等のものとしてどこでも言及されています であるため、プログラムの uid も変更される可能性があるか、またはその方法がすでに正しいものになっている可能性があります。

    ネットを見回すと、使用できる既製のラッパーがいくつかあります。すでに RedHat にパッケージ化されているものもあります。 daemonize を見てください 、たとえば。


    Linux
    1. Linuxでユーザーを一覧表示する-最良の方法

    2. Linuxでのsudoの8つのベストプラクティス–sudoの推奨事項と禁止事項

    3. WebブラウザでLinuxを実行するための10のベストWebサイト

    1. UNIX / Linux :シェルとは?異なるシェルとは何ですか?

    2. Linux OS サービス「sshd」

    3. Linux で Java アプリケーションをサービスとして実行する

    1. Pythonスクリプトをサービスとして実行するには?

    2. Linux:接続された USB シリアル ドングルでデーモンを開始する

    3. bash スクリプトをデーモンとして実行する