linux里面以指定用户运行命令

一、chroot方式

[[email protected] ~]# chroot --userspec "nginx:nginx" "/" sh -c "whoami"
nginx
[[email protected] ~]# 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 &

二、daemon函数形式

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

On RHEL systems, the /etc/rc.d/init.d/functions script is intended to provide similar to what you want. If you source that at the top of your init script, all of it‘s functions become available.

The specific function provided to help with this is daemon. If you are intending to use it to start a daemon-like program, a simple usage would be:

daemon --user=username command

If that is too heavy-handed for what you need, there is runuser (see man runuser for full info; some versions may need -u prior to the username):

/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

原文地址:https://www.cnblogs.com/wangqingyong/p/11078603.html

时间: 2024-10-13 11:24:03

linux里面以指定用户运行命令的相关文章

Linux自动向指定用户发送邮件

Linux自动向指定用户发送邮件 实现Linux向用户发送指定主题和指定内容的邮件,可以用mailx软件,mailx是UNIX系统上用来处理邮件的工具,使用它可以发送,读取邮件. 一.安装mailx [[email protected] ~]# yun -y install mailx 二.配置文件 配置文件放置于etc目录下面,名字为/etc/mailx. 之前看过无数修改配置文件的帖子,感觉对于我来说太麻烦,而且我使用mail发送邮件时不会向太多的人同时范松邮件,因此我采取不修改配置文件,而

Linux常见文件及用户管理命令

Linux常见文件及用户管理命令 * Linux上的文件管理类命令1.目录管理命令 (1)ls:list,列出指定目录下的内容 ls [OPTION]... [FILE]... -a:显示所有文件,包括隐藏文件; -A:显示除.和..之外的所有文件 -l:--long,长格式列表,即显示文件的详细属性信息 [[email protected] /]# ls -l /etc/fstab -rw-r--r--. 1 root root 501 Jul 24 09:24 /etc/fstab -:文件

Linux CentOS 6.5 用户 常用命令

用过Linux系统的人都知道,Linux系统查看用户不是会Windows那样,鼠标右键看我的电脑属性,然后看计算机用户和组即可. 那么Linux操作系统里查看所有用户该怎么办呢?用命令.其实用命令就能很轻松的查看到Linux系统有哪些用户. 1.Linux里查看所有用户 (1)在终端里.其实只需要查看 /etc/passwd文件就行了. (2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户. 或者用cat /etc/passwd |cut -f 1 -d : 2.用户管理命令

Linux指定用户运行程序

可以参考文章: https://www.cnblogs.com/jmliao/p/11823209.html 具体事例: #在root用户下,直接用以下命令来执行程序,程序执行后,程序隶属于用户git su - git -c "nohup /home/git/gogs/gogs web >/dev/null 2>&1 &" 原文地址:https://www.cnblogs.com/faberbeta/p/linux-shell024.html

[鸟哥linux视频教程整理]04_01_Linux用户管理命令详解

一.用户管理: 1. 添加用户:useradd [option] USERNAME -u:UID -g:GID(基本组) -G:GID,..(附加组) -c:"COMMENT" -d:/path/to/somedirectory -s:shell -m -k: -M: -r:添加系统用户 环境变量: PATH: HISTSIZE: SHELL: echo $SHELL 2. 删除用户: userdel [option] USERNAME -r:同时删除用户的家目录 3. id:查看用户

Linux中查询当前用户的命令总结

1.w命令查看当前用户 [[email protected] /]# w04:31:52 up  1:45,  2 users,  load average: 0.00, 0.01, 0.05USER    TTY        FROM            [email protected]  IDLE    JCPU  PCPU  WHATroot      tty1                                02:46      1:45m  0.02s  0.02s

Linux 下批量创建用户(shell 命令)

第一种方法: 用shell批量创建用户,分为2中:1,批量创建的用户名无规律 :2.批量创建的用户名有规律首先,来说下批量创建的用户名无规律的shell:先把需要批量创建的用户名用一个文本文档列出来,如下图的userlist文件再把与用户名匹配的密码用另一个个文本文档列出来,如下图的passwd文件 这两个文本文档内容,如下图所示: 下面是我编写的shell脚本.如下图所示 注意需要导入我们在userlist中写的用户名与passwd中写的与用户名匹配的密码项注:chpasswd命令#以root

linux系统命令学习系列-用户切换命令su,sudo

先复习一下上节内容: 用户组添加groupadd 用户组修改groupmod 用户组删除groupdel 作业创建一个id为501的组group1,然后改成group2, 同时id变为502,最后删除这个组,命令分别如下: groupadd –g 501 group1 groupmod –g 502 –n group2 group1 groupdel group2 这一节,我们来说一下用户切换相关命令 为什么要进行用户切换? 在操作过程中需要使用特定的用户进行特定的操作,多数情况下是因为权限,比

[linux] /sbin/nologin的用户运行程序

创建一个/sbin/nologin用户 [[email protected] ~]# useradd -s /sbin/nologin redis [[email protected] ~]# grep redis /etc/passwd redis:x:501:501::/home/redis:/sbin/nologin [[email protected] ~]# su redis -c "echo ss" This account is currently not availab