コマンドを実行するかを指定するにはLinuxユーザ

、chrootの道

[root@localhost ~]# chroot --userspec "nginx:nginx" "/" sh -c "whoami"
nginx
[root@localhost ~]# chroot --userspec "kibana:kibana" "/" sh -c "whoami"
kibana

kibana例を開始するKibanaユーザー:

chroot --userspec "kibana:kibana" "/" sh -c "/usr/share/kibana/bin/kibana -c /etc/kibana/kibana.yml" >> /var/log/kibana/kibana.stdout 2>> /var/log/kibana/kibana.stderr &
  # Run the program!

  chroot --userspec "$user":"$group" "$chroot" sh -c "

    cd \"$chdir\"
    exec \"$program\" $args
  " >> /var/log/kibana/kibana.stdout 2>> /var/log/kibana/kibana.stderr &

chroot環境

二、デーモン関数形

参照https://stackoverflow.com/questions/17956151/how-to-run-a-command-as-a-specific-user-in-an-init-script

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"

elasticsearch起動スクリプトの例:

#
# Source function library.
#
if [ -f /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
fi

cd $ES_HOME
echo -n $"Starting $prog: "
# if not running, start it up here, usually something like "daemon $exec"
daemon --user elasticsearch --pidfile $pidfile $exec -p $pidfile -d
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval

おすすめ

転載: www.cnblogs.com/wangqingyong/p/11078603.html