参考:http://blog.useasp.net/archive/2015/07/29/run-command-as-different-user-on-linux.aspx

在实际中,我们有时候想在一个脚本中指定用户来运行另一个程序,从而更好地管理进程。可以通过runuser、su和sudo来实现。

runuser

runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。

语法:

runuser [options] -u user command [argument...]
runuser [options] [-] [ user [argument...] ]

示例:

runuser - Ruby -g Ruby -c "sh my.sh"

su

su命令允许你成为一个超级用户或者替代用户(substitute user),欺骗用户(spoof user),设置用户(set user)或者切换用户(switch user)。它允许一个Linxu用户切换当前用户到那些你知道密码的目标用户,切换包括与之关联的运行中的控制台(console)或者Shell。

语法:

su [options...] [-] [user [args...]]

示例:

su - Ruby -c "sh my.sh"

sudo

sudo以另外的用户来执行一个命令,但是它跟着一组关于那些用户可以以那些其他用户执行那些命令的规则(有点绕口——译注)。这个规则在/etc/sudoers这个文件中被定义。不像susudo验证用户是靠用户自己的密码而不是那个要切换的用户密码。

语法:

sudo command

示例:

sudo sh my.sh

Linux指定用户运行程序的更多相关文章

  1. linux 指定用户 启动 程序

    sudo -H -u {username} /bin/bash -c "python test.py &" "&"  后台运行指令 本人亲测可用 ...

  2. shell下root用户切换其他用户运行程序

    工作中,一些程序,需要随机启动,但是不是以root用户运行,于是需要在rc.local中通过shell,从root用户切换到其他用户运行程序,命令如下: su -c 'command' - user ...

  3. linux下在root用户登陆状态下,以指定用户运行脚本程序实现方式

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAABKCAIAAACASdeXAAAEoUlEQVR4nO2dy7WlIBBFTYIoSIIkmD ...

  4. Linux以指定用户非root用户运行程序、进程

    方式一: 使用su命令切换用户运行 su 用户名 方式二: useradd -s /sbin/nologin -M test   -s /sbin/nologin表示创建一个禁止登陆的用户(比如www ...

  5. 如何在Linux实现自动运行程序

    1.开机启动时 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init. init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc. ...

  6. linux 系统shell运行程序不退出

    如果通过ssh远程连接到linux系统终端,在shell下执行程序.假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile. 当我们用 ./app paramfile ...

  7. Windows/Linux获取当前运行程序的绝对路径

    windows 获取当前运行程序的绝对路径(.exe) GetModuleFileNameA()函数获取绝对路径,不过文件路径中的反斜杠需要进行替换. ]; GetModuleFileNameA(NU ...

  8. [Linux] cronjob指定用户运行脚本,并按日期区分输出日志

    废话不多说,直接上代码,在root的cronjob,指定nginx用户跑cronjob */1 * * * * su nginx -c "/usr/local/scripts/goods.s ...

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

    创建一个/sbin/nologin用户 [root@host101 ~]# useradd -s /sbin/nologin redis [root@host101 ~]# grep redis /e ...

随机推荐

  1. feignClient传参(参数为对象类型)的一个坑

    客户端 @RequestMapping(value = "/friendCircleComment/comment",method = RequestMethod.POST) R ...

  2. Python笔记(一)_基础

    数据类型和转换 整型.浮点型.字符串.布尔值 int() 整型转换 float() 浮点型转换 str() 字符串转换 运算符.操作符 算术运算符:+  -  *  /  %  //  ** 赋值运算 ...

  3. 有根树的表达 Aizu - ALDS1_7_A: Rooted Trees

    有根树的表达 题目:Rooted Trees Aizu - ALDS1_7_A  A graph G = (V, E) is a data structure where V is a finite ...

  4. Springboot02-配置文件

    配置文件读取 springboot中的配置文件都放在application.properties中,其中而k-v属性可以通过@Value("${属性名}")直接获取 @Compon ...

  5. 【题解】小X的AK计划

    题目描述 虽然在小X的家乡,有机房一条街,街上有很多机房.每个机房里都有一万个人在切题.小X刚刷完CodeChef,准备出来逛逛.机房一条街有n个机房,第i个机房的坐标为xi,小X的家坐标为0.小X在 ...

  6. mySQL部分疑问和小结(orale)

    2015/10/15 1.mysql语句: ALTER table scfz_xewp add BGR varchar(255) after KYR 2.创建触发器时:  --/   CREATE D ...

  7. 面试题。线程pingpong的输出问题

    第一种情况:public class Main { public static void main(String args[]) { Thread t = new Thread() { public ...

  8. 彩彩只能变身队团队项目进展记录by后端

    2018.06.03 早上8:00-晚上8:00 后端小组一起在图书馆四楼边学边做: 1.首先搞定了数据库,学会了怎样用命令行来操作数据库,并且建立了一个用户表. 2.然后自己设计了一个简陋的前端页面 ...

  9. 第十章 Ingress

    一.资料信息 Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginx Ingress-Nginx 官方网站:https: ...

  10. 力扣——single number (只出现一次的数字) python实现

    题目描述: 中文: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 英 ...