当前位置: 首页 > 科技观察

如何在Linux系统下以另一个用户身份运行程序_0

时间:2023-03-16 14:47:00 科技观察

#1:runuser命令runuser命令使用备用用户或组ID来运行shell。此命令仅可作为root用户使用。仅与会话PAM挂钩一起运行,并且没有密码提示。如果使用非root用户,并且该用户没有设置用户ID的权限,则该命令将失败,因为程序没有setuid。由于runuser不运行身份验证和帐户PAM挂钩,因此它的级别低于su。语法:runuser-luserNameHere-c'command'runuser-luserNameHere-c'/path/to/commandarg1arg2'例如,作为root用户,你可能想查看oracle用户下的shell资源限制,输入:#runuser-loracle-c'ulimit-SHa'或监控nginx或lighttpdweb服务器限制:#runuser-lnginx-c'ulimit-SHa'或#runuser-llighttpd-c'ulimit-SHa'有时,root用户由于权限(安全)问题无法浏览NFS安装的共享:#ls-l/nfs/wwwroot/cyberciti.biz/http或#cd/nfs/wwwroot/cyberciti.biz/http可能的输出:-bash:cd:/nfs/wwwroot/cyberciti。biz/http/:Permissiondenied不过,apache用户可以浏览或访问安装在/nfs/wwwroot/cyberciti.biz/http/下的基于NFS的系统:#runuser-lapache-c'ls-l/nfs/wwwroot/cyberciti.biz/http/'或#runuser-lapache-c'cd/nfs/wwwroot/cyberciti.biz/http/;viindex.php'使用runuser命令不使用密码,并且只能在root用户下面使用。可用选项:1.-l:使shell成为登录shell,将默认替换为runuser-lPAM文件2.-g:指定主组3.-G追加组4.-c:命令,待传递到shell单一命令5.--session-command=COMMAND:使用-c在shell中传递单一命令并且不创建新会话6.-m:不重置环境变量。#2:su命令su命令允许您成为超级用户或替代用户、欺骗用户、设置用户或切换用户。它允许一个Linxu用户将当前用户切换到你知道其密码的目标用户,包括正在运行的控制台(console)或与之关联的Shell。其语法如下:su-su-username切换到root用户su命令会询问目标用户的密码,在你的shell命令行中输入su-切换到root用户(你必须知道目标用户的密码)root用户):vivek@wks01:~$su-或vivek@wks01:~$su-root示例输出:Password:root@wks01:/root#logoutvivek@wks01:~$如果输入正确的root密码,所有权session(这里应该是指当前控制台的上下文——注解)将被更改为root帐户。输入logout退出root登录shell,输入whoami或id命令验证当前会话的所有者:whoami使用root帐户运行命令语法:su-root-c"command"#ORsu--c"commandarg1》查看/根目录下的内容,原来普通用户是看不到的,运行:su-root-c"ls-l/root"需要注意的是Linix和一些类Unix系统有一个wheel用户组,并且只允许该组中的用户使用su切换到root。使用su命令允许其他用户运行命令以下命令切换到oracle帐户并显示限制列表:$su-oracle-c'ulimit-aHS'同样,如果提供了正确的oracle密码,会话所有权将更改为oracle帐户。su命令的日志保存在系统日志中,一般在/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(RHEL/CentOS)。#p##3:sudo命令sudo以另一个用户的身份执行命令,但它遵循一组规则,关于哪些用户可以像其他用户一样执行这些命令(有点啰嗦——注释)。此规则在文件/etc/sudoers中定义。与su不同的是,sudo是通过用户自己的密码而不是被切换用户的密码来对用户进行身份验证的。Whileprovidinganaudittrailofcommandsandtheirarguments(原文:...whileprovidinganaudittrailofthecommandsandtheirarguments—annotation)sudo允许系统管理员将某些用户(或用户组)委派为root或其他用户运行一些(或全部)命令。这允许将特定命令委派给特定主机上的特定用户,而无需在用户之间共享密码。语法如下:sudocommand参考以下链接:1.Linux操作系统下sudo工具的配置和使用方法12.sudo项目主页2GUI工具说明(su和sudo的前端GUI)gksu命令是su的前台,gksudo是sudo的前端。它们的主要用途是运行需要root权限但不需要运行X终端仿真器并直接使用su的图形命令。语法如下:gksu[-u][options]gksudo[-u][options]输入gksu,会弹出如下窗口:图1:gksuinoperation接着,会要求你输入root用户的密码:图2:目标用户的Gnomegksu认证框你也可以直接运行以下代码:gksu-uroot'ls/root'或者运行作为oracle用户的命令:gksu-uoracle'ulimit-aHS'或作为root登录:gksu-uroot-l总结:runuserVSsuVSsudo有关su、sudo、gksu和gksudo命令。说明:本文是对nixCraft的一篇文章的翻译。我非常感谢nixCraft提供了这么棒的教程。原文可通过原文链接查看,供参考。翻译中省略了开头和结尾的一些无关信息。我以阅读和翻译的形式完成了这篇博文。一定有很多错误。请纠正我。参考:1.Linux操作系统下如何配置和使用sudo(英文页面)2.Sudo项目主页(英文页面)3.本博客原文(英文页面)