Linux下以其他用户身份运行程序— su、sudo、runuser

linux Terry 318浏览 0评论

su 的语法

su [OPTION选项参数] [用户]
-, -l, –login
切换用户时,使环境变量(home,shell,user,logname,path等)和欲切换的用户相同,不使用则取得用户的临时权限,不加载环境变量。用su命令切换用户后,可以用 exit 命令或快捷键[Ctrl+D]可返回原登录用户;

-c, –command=COMMAND
使用 -c 传递单个命令到 shell 中,执行命令后,就恢复原来的用户身份,退出所切换到的用户环境;

–session-command=COMMAND
使用 -c 传递单个命令到 shell 中,并且不创建新的会话;

-f, –fast
通过 -f 参数到 shell (针对 csh 或 tcsh);

-m, –preserve-environment
不重置环境变量;

-s, –shell=SHELL
指定执行命令的shell;

–help
显示帮助信息;

–version

示例

su -
su - root 
su - root -c "ls -l /root"
su - oracle -c "ulimit -aHS"
su -s /bin/sh -c "/usr/local/nginx/sbin/nginx"

sudo语法

sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command

-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

runuser命令

runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。
仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。
3.1、runuser 语法
语法与 su 命令基本一样:
-, -l, –login
让shell成为登录shell,用 runuser -l PAM 文件替代默认的;

-g –group=group
指定主要的组;

-G –supp-group=group
指定追加组

-c, –command=COMMAND
使用 -c 传递单个命令到 shell 中,执行命令后,就退出到 root;

–session-command=COMMAND
通过一个单一的命令用 -c 参数到 shell ,不创建一个新的会话;

-f, –fast
通过 -f 参数到 shell (针对 csh 或 tcsh);

-m, –preserve-environment
不重置环境变量;

-p     same as -m
-s, –shell=SHELL
指定执行命令的shell;

runuser示例

runuser -l  userNameHere -c '/path/to/command arg1 arg2'
runuser -l oracle -c 'ulimit -SHa'
runuser -s /bin/sh-c "/usr/local/nginx/sbin/nginx"

su 与 runuser 都可以用来写系统自启动脚本,如 Tomcat 服务使用系统用户启动的自启动脚本。什么时候使用哪种命令,根据使用场景自己来决定吧。

转载请注明:Terry's blog » Linux下以其他用户身份运行程序— su、sudo、runuser

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址