-
2020-05-25 15:56:11
本文综合分析了Linux系统下,如何使用runuser命令、su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较。
一、su 命令临时切换用户身份
SU:( Switch user切换用户),可让一个普通用户切换为超级用户或其他用户,并可临时拥有所切换用户的权限,切换时需输入欲切换用户的密码;也可以让超级用户切换为普通用户,临时以低权限身份处理事务,切换时无需输入欲切换用户的密码。
zai Linux 系统中,有时候普通用户有些事情是不能做的,除非是 root 用户才能做到。这时就需要用 su 命令临时切换到 root 身份来做事了。
1、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
显示版本信息;
2、su 的范例:
1
2
3
4
5
su
-
su
- root
su
- root -c
"ls -l /root"
su
- oracle -c
"ulimit -aHS"
su
-s
/bin/sh
-c
"/usr/local/nginx/sbin/nginx"
3、su 的优缺点
su 的确为管理带来方便,通过切换到 root 下,能完成所有系统管理工具,只要把 root 的密码交给任何一个普通用户,他都能切换到 root 来完成所有的系统管理工作。但通过 su 切换到 root 后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过 su 来切换到超级权限的 root,必须把 root 权限密码都告诉这10个用户。如果这10个用户都有 root 权限,通过 root 权限可、以做任何事,这在一定程度上就对系统的安全造成了威协,想想 Windows 吧,简直就是恶梦。“没有不安全的系统,只有不安全的人”,我们绝对不能保证这10个用户都能按正常操作流程来管理系统,其中任何一人对系统操作的重大失误,都可能导致系统崩溃或数据损失,所以 su 工具在多人参与的系统管理中,并不是最好的选择,su 只适用于一两个人参与管理的系统,毕竟 su 并不能让普通用户受限的使用;超级用户 root 密码应该掌握在少数用户手中,这绝对是真理!所以集权而治的存在还是有一定道理的。
二、sudo 命令
1、sudo 的适用条件
由于su 对切换到超级权限用户 root 后,权限的无限制性,所以 su 并不能担任多个管理员所管理的系统。如果用 su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。通过 sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道 root 密码,所以 sudo 相对于权限无限制性的 su 来说,还是比较安全的,所以 sudo 也能被称为受限制的 su。另外 sudo 是需要授权许可的,所以也被称为授权许可的 su。
sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。默认只有 root 用户能使用 sudo 命令,普通用户想要使用 sudo,是需要 root 预先设定的,默认 root 能够 sudo 是因为这个文件中有一行”root ALL=(ALL) ALL”。2、sudo 配置文件
我们可以用他的专用编辑工具 visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息;配置好后,可以用切换到您授权的用户下,通过sudo -l 来查看哪些命令是可以执行或禁止的。
/etc/sudoers 文件中每行算一个规则,前面带有 # 号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用 \ 号来续行,这样看来一个规则也可以拥有多个行。
/etc/sudoers 的规则可分为两类:一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的。
sudo授权规则(sudoers配置):
1
授权用户 主机=命令动作
这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加 NOPASSWD: 参数,但这些可以省略。举例说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
执行visudo之后,可以看见缺省只有一条配置:
root ALL=(ALL) ALL
那么你就在下边再加一条配置:
admin ALL=(ALL) ALL这样,普通用户 admin 就能够执行 root 权限的所有命令。
让普通用户support只能在某几台服务器上,执行root能执行的某些命令,首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种:
Host_AliasCmnd_Alias
User_Alias
Runas_Alias
配置Host_Alias:就是主机的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上 ! 表示不能执行此命令。命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径!
Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4
配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
Host_Alias EPG = 192.168.1.1, 192.168.1.2
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
Cmnd_Alias SQUID =
/opt/vtbin/squid_refresh
, !
/sbin/service
,
/bin/rm
Cmnd_Alias ADMPW =
/usr/bin/passwd
[A-Za-z]*, !
/usr/bin/passwd
, !
/usr/bin/passwd
root
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin EPG=(ALL) NOPASSWD: SQUID
admin EPG=(ALL) NOPASSWD: ADMPW
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
当然新用户的配置也可以放到,/etc/sudoers.d/ 下的文件里,也会生效,修改也方便。
3、sudo 语法
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command
1
2
3
4
5
6
7
8
9
10
11
-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更底层。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;
2、runuser 样例
1
2
3
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"
有时,root用户由于权限(安全)问题不能浏览NFS挂载的共享:
1
ls
-l
/nfs/wwwroot/http
或
1
cd
/nfs/wwwroot/http
可能的输出:
1
-
bash
:
cd
:
/nfs/wwwroot/http/
: Permission denied
尽管如此,apache用户被允许浏览或访问挂载在/nfs/wwwroot/http/下基于nfs的系统:
1
runuser -l apache -c
'ls -l /nfs/wwwroot/http/'
或
1
runuser -l apache -c
'cd /nfs/wwwroot/http/; vi index.php'
使用runuser命令,无需使用密码,并且,只能在root用户下使用。
四、总结:su VS su VS dorunuser
命令 root
到 用户用户
到 root任意用户 到
任意用户认证方式 日志文件 备注 runuser Y N N 无 无 因 runuser 不会运行认证和账户 PAM 钩子,它比 su 更底层。 su Y Y Y 目标用户的密码 /var/log/auth.log 或
/var/log/secure
你必须与其它用户分享你的密码或 root 密码。 sudo Y Y Y 认证用户使用他们自己的密码,而不是目标用户。 /var/log/auth.log 或
/var/log/secure
允许系统管理员委托授权给一个特定的用户(或用户组),让其在提供审计跟踪命令后可以以 root 或其它用户运行某些(或全部)命令。 su 与 runuser 都可以用来写系统自启动脚本,如 Tomcat 服务使用系统用户启动的自启动脚本。什么时候使用哪种命令,根据使用场景自己来决定吧。
更多相关内容 -
Windows下以其他用户身份运行程序.doc
2022-07-06 23:06:38Windows下以其他用户身份运行程序 -
域用户以管理员权限运行程序方法.txt
2020-06-29 17:21:14域用户以管理员权限运行程序方法,域用户运行Everything ,等适用绝大部分程序!!!!!!!!!!!!! -
AutoIt以其他用户身份运行程序
2018-12-16 11:42:55准备工作 lsrunas.exe autoit v3 install.bat(模拟右键以管理员身份运行) ... 修改为要提升权限运行的程序 $exe = "install.bat" DirCreate($dir) ; 修改为要提升权限运行的程序 Fi...准备工作
- lsrunas.exe
- autoit v3
- install.bat(模拟右键以管理员身份运行)
具体文件如下图
程序代码
提权.au3
#include <Misc.au3> $dir = "c:\_autoit_tmp\" ; 修改为要提升权限运行的程序 $exe = "install.bat" DirCreate($dir) ; 修改为要提升权限运行的程序 FileInstall("install.bat", $dir & $exe, 1) FileInstall("lsrunas.exe", $dir & "lsrunas.exe", 1) If _Singleton(@ScriptName, 1) = 0 Then MsgBox(0, "警告", "当前已有该程序在运行,请耐心等候,勿重复点击!") Exit EndIf $u = "" $p = "" $bSuccess = False DetectAdministrator() If $bSuccess Then ;以administrator身份调用$exe ;如果普通用户直接运行lsrunas.exe调用带有盾牌图标的程序会运行失败 ;所以第一步先用lsrunas.exe以管理员身份启动一个cmd,并传入要调用的程序作为参数 ;由该cmd再调用带盾牌的程序 $cmd = """" & @ComSpec & " /C " & $dir & $exe & """" RunWait($dir & "lsrunas.exe /user:" & $u & " /password:" & $p & " /domain:. /command:" & $cmd & " /runpath:" & $dir, $dir, @SW_HIDE) Else MsgBox(0, "错误", "提升权限失败,可能原因:用户名密码不对/用户锁定/无法登陆/...!") Exit EndIf Func DetectAdministrator() ; 如果要添加账号密码, 对应好账号密码位置,并修改数组数量 local Const $arrUsers[2] = ["Administrator", "Admin"] local Const $arrPwds[2] = ["administratorpassword", "adminpassword"] ; 修改为 0 To 数组长度 For $i = 0 To 2 RunWait("cmd /c" & """lsrunas /user:" & $arrUsers[$i] & " /password:" & $arrPwds[$i] &" /domain:. /command:""cmd /C"" /runpath:.""" & " > log.txt", $dir, @SW_HIDE) $ret = FileRead($dir & "log.txt") If StringIsSpace($ret) <> 1 Then ContinueLoop Else $u = $arrUsers[$i] $p = $arrPwds[$i] $bSuccess = True ExitLoop EndIf Next EndFunc
install.bat
@echo off color 2 cd %~dp0 REM 提升权限,模拟右键以管理员身份运行 REM 主要针对Win8, 10系统, win7关闭UAC不受影响 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" REM 此处开始填写你的代码
说明
如下图:
Win10
下普通用户使用lsrunas
模拟以Administrator
身份运行WeChatSetup.exe
会失败
需使用lsrunas
模拟以Administrator
身份运行cmd
, 由cmd
调用WeChatSetup.exe
-
VC++以其他用户身份运行程序
2009-03-21 09:29:50VC++以其他用户身份运行程序,例如在Administrator模式下,以User身份运行程序。提供大家参考! -
在SYSTEM权限下以当前用户权限运行程序
2017-01-06 09:54:45在SYSTEM权限下以登陆用户运行程序。 ap.exe yourprogram.exe 请勿用于非法用途,即使要用一定要自己编译去掉banner! -
C#默认以管理员身份运行程序实现代码
2021-01-01 22:39:05程序默认以管理员身份运行 代码如下: static void Main(string[] Args) { /** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前... -
Linux以其他用户身份来执行程序的方法
2021-05-11 23:52:13本文就来介绍一下Linux以其他用户身份来执行程序的方法。一、 runuser命令:概述:runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。仅以会话PAM钩子运行,并且没有密码提示。如果...在Linux系统中,程序一般都是在系统用户下运行的。当然也其他用户也可以运行程序,只不过要通过以些设置来让程序在其他用户中执行。本文就来介绍一下Linux以其他用户身份来执行程序的方法。
一、 runuser命令:
概述:runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。
仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。
语法如下图:
使用注意事项:使用runuser命令,无需使用密码,并且,只能在root用户下使用。
二、su命令
1. 概述:su命令允许你成为一个超级用户或者替代用户(substitute user),欺骗用户(spoof user),设置用户(set user)或者切换用户(switch user)。它允许一个Linxu用户切换当前用户到那些你知道密码的目标用户,切换包括与之关联的运行中的控制台(console)或者Shell
它的语法如下图所示:
2. 切换到root用户:su命令会询问目标用户的密码,在你的shell命令行中输入 su - 来切换到root用户(你必须知道root用户的密码)
如果输入了正确的root密码,会话的所有权(这里应该指当前控制台的上下文——译注)将改为root账户。输入logout可以退出一个root登录的shell,输入 whoami或者id命令来验证当前会话的所有者。
-
Windows下以其他用户身份运行程序
2012-08-07 10:58:30runas /savecred /usr:administrator "C:\Program Files\SogouExplorer\sogouexplorer.exe" ... 从 Windows 2000 开始,微软的视窗操作系统开始提供给当前登录用户以不同的用户身份来runas /savecred /usr:administrator "C:\Program Files\SogouExplorer\sogouexplorer.exe"
http://blog.sina.com.cn/s/blog_107000590100mwml.html
从 Windows 2000 开始,微软的视窗操作系统开始提供给当前登录用户以不同的用户身份来运行程序的功能。前提是系统的 RunAs 服务(Windows 2000 下) / Secondary Logon 服务(Windows XP 下)没有被禁用并处于已启动状态。
在必需的 RunAs / Secondary Logon 服务已经启动之后,就可以为程序设定用户身份。对于一般的可执行程序来说,只需要创建指向该可执行文件的快捷方式,然后在按住 Shift 键的同时鼠标右键单击快捷方式,然后单击“运行方式 ...”,在弹出的对话框中设置指定的用户及密码信息即可。这里是微软官方的 HOW TO 指南。
但对于某些特殊类型的快捷方式来说,用 Shift + 鼠标右键唤出的菜单中并没有“运行方式 ...”的设置选项,比如说一些批处理文件(.bat)等有缺省文件类型打开方式的快捷连接。对于这种文件如果需要使用到 RunAs 的功能,可以新建一个空的快捷方式,在快捷方式向导对话框中键入项目的位置为 runas /savecred /usr:administrator "command line to the real application" 即可。其中 /usr: 后面的administrator 表示以 administrator 用户身份运行程序;command line to the real application填写实际程序的执行命令; /savecred 参数将自动保存输入的密码,这样在下一次运行快捷方式的时候就不需要再输入密码(该参数在 XP Home Edition 版本中无效),如果不希望系统保存密码去掉该参数即可。
RUNAS 用法:
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/user: program
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/smartcard [/user:] program
/noprofile 指定不应该加载用户的配置文件。
这会加速应用程序加载,但
可能会造成一些应用程序运行不正常。
/profile 指定应该加载用户的配置文件。
这是默认值。
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用。
/savecred 用用户以前保存的凭据。
Windows XP Home Edition 上没有这个选项。
该选项会被忽略。
/smartcard 如果凭据是智能卡提供的,则使用这个选项。
/user 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
program EXE. 的命令行。请参阅下面的例子
例如:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad "my file.txt""
注意: 只在得到提示时才输入用户的密码。
注意: USER@DOMAIN 跟 /netonly 不兼容。
注意: /profile 跟 /netonly 不兼容。
其中mymachine可以通过我的电脑--属性--好像是第二个选项卡上面查到
刚启动电脑后直接进入受限帐户,使用runas命令时会出现"拒绝访问".
用户名,密码等都输入正确,但进一遍管理员用户后再回来则一切正常,请教下原因...
试试这个:runas /savecred /user:mymachine\administrator cmd
Runas
允许用户用其他权限运行指定的工具和程序,而不是用户当前登录提供的权限。
语法
runas [{/profile /noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
参数
/profile
加载用户的配置文件。/profile 是默认值。
/no profile
/noprofile 指定不加载用户的配置文件。这使应用程序载入的更加快速,但是在一些应用程序中也会引起错误。
/env
指定当前使用的网络环境,而不是用户的本地环境。
/netonly
指明指定的用户信息只用于远程访问。
/smartcard
/smartcard 表示凭据是否是由智能卡提供的。
/showtrustlevels
列出 /trustlevel 开关项。
/trustlevel
指定应用程序运行所在的授权级别。使用 /showtrustlevels 查看可用的信任级别。
/user:UserAccountName
指定在其下运行程序的用户帐户的名称。用户帐户的格式应是 user@domain 或 domain\user。
程序
指定要用在 /user 中指定的帐户运行的程序或命令。
/?
在命令提示符显示帮助。
注释
管理员可以使用一个权限受限制的帐户执行日常、非管理性的任务,只有在执行特定管理任务时,才使用一个权限更大的帐户。要不经过注销再重新登录就完成这样的任务,可以用一般帐户登录,然后使用 runas 命令来运行需要更大权限的工具。
有关 runas 命令的使用范例,请参阅“相关主题”。
尽管 runas 通常由 Administrator 帐户使用,但并非仅限于 Administrator 帐户。任何拥有多个帐户的用户均可以利用备用凭据,使用 runas 运行程序、MMC 控制台或“控制面板”项。
如果要在计算机上使用 Administrator 帐户,对于 /user:,键入下列参数之一:
/user:AdministratorAccountName@ComputerName
/user:ComputerName\AdministratorAccountName
如果想以域管理员身份使用这个命令,键入下列参数之一:
/user:AdministratorAccountName@DomainName
/useromainName\AdministratorAccountName
runas 命令允许您运行程序 (*.exe)、保存的 MMC 控制台 (*.msc)、程序和保存的 MMC 控制台的快捷方式及“控制面板”项。作为另一组(例如“Users”或“Power Users”组)的成员登录到计算机时,可以以管理员的身份运行。
可以使用 runas 命令来启动任何程序、MMC 控制器或“控制面板”项。只要提供适当的用户帐户和密码信息,用户帐户就具有登录到计算机的能力,并且程序、MMC 控制台、“控制面板”项在系统中及对该用户帐户均可用.
runas 命令允许您管理其他域的服务器(运行工具的计算机和要管理的服务器在不同的域中)。
如果尝试使用 runas 从网络位置启动程序、MMC 控制台或“控制面板”项,可能会因为用来连接网络共享的凭据与用来启动程序的凭据不同而失败。后者的凭据可能无法访问同一网络共享。
有些项,例如“打印机”文件夹和桌面项,间接由 Windows 2000 打开,而不能使用 runas 命令启动。
如果 runas 命令失败,则可能是没有运行 RunAs 服务或使用的用户帐户无效。要检查 RunAs 服务的状态,请在“计算机管理”中单击“服务和应用程序”,然后单击“服务”。要测试用户帐户,请尝试使用该帐户登录合适的域。
范例
要在本地计算机上以管理员身份启动 Windows 2000 命令提示行实例,请键入:
runas /user:localmachinename\administrator cmd
系统提示时,键入管理员密码。
要使用名为 companydomain\domainadmin 的域管理员帐户启动“计算机管理”管理单元实例,请键入:
runas /user:companydomain\domainadmin "mmc %windir%\system32\compmgmt.msc"
当提示时,键入帐户密码。
要使用名为 domain.microsoft.com 的域中的域管理员帐户 user 启动“记事本”实例,请键入:
runas /user:user@domain.microsoft.com "notepad my_file.txt"
当提示时,键入帐户密码。
要启动命令提示符行窗口、保存的 MMC 控制台、控制面板项或管理其他地点服务器的程序的一个实例,请键入:
runas /netonly /user:domain\username "command"
domain\username 必须是有足够权限管理服务器的用户。当提示时,键入帐户密码。
在win2k中,开始→程序→附件 ,找到计算器,按住shift键,点右键,选择“运行方式 ...”,这时候,会弹出对话框,询问你要使用哪个用户身份来运行该程序 。
不知道大家是否使用过win2k的这个功能,如果大家是使用win2k的英文版本的话,在按住shift后选择的就不是“运行方式 ...”而是“runas...”,也就是今天要讲的这个命令。
在cmd中输入runas,会得到帮助,今天,我们只将它最简单的用法,就是怎么样使用这个命令来以另外一个用户身份运行一个程序。
其实,命令非常简单:
runas /user:user_name program.exe
user_name是要使用哪个用户运行该程序就写上哪个用户名,program.exe是程序名,如果program.exe不在system32目录下的话,需要指明具体路径。
为了证明这个过程,做一个实验,那就是使用guest帐号来运行at命令,查看当前的计划任务清单,大家都知道,guest默认情况下是没有此权限的,因此,只要这个命令真的起作用的话,会出现“拒绝访问”的字样,在这里,我们使用这个命令:
runas /user:guest "cmd.exe cmd/k at.exe"
cmd.exe 是调用cmd这个程序,而cmd/k则是指cmd命令后跟/k参数,目的是为了是当前的执行结果的屏幕保留。
(注意:这里由于命令过长,而且中间有空格,所以用引号引起来,如果只有一个命令,例如at.exe的话,那么就不需要有引号了)
由于运行的程序是在一个新窗口中打开,而不是在原来的cmd窗口中打开,所以,如果我不使用cmd.exe cmd/k这个参数的话,窗口会一闪而过,看不到效果。
运行完这个命令后,会要求guest的密码,填上,回车,等一会,一会就会出现一个cmd窗口,里面写着“拒绝访问”,而且,在cmd窗口上沿还有“(运行为guest)”的字样。
这个工具还可以在域中使用,而且还可以加上个人配置文件,实在是很爽 ~~~
-------
RUNAS 用法:
RUNAS [/profile] [/env] [/netonly] /user: program
/profile 如果需要加载用户的配置文件
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用
/user 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
program EXE. 的命令行。参阅下面的例子
例如:
> runas /profile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad "my file.txt""
注意: 只有在被提示时才输入用户的密码。
注意: USER@DOMAIN 与 /netonly 不兼容。
这应该是英语吧!!!!!!!
-
Linux下以其他用户运行程序
2021-05-08 21:10:20如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。语法:runuser -l userNameHere -c 'co... -
在普通用户下以root权限运行程序
2021-05-11 15:03:48操作系统:ubuntu14.04 lts 64 bit安装软件:eclipse Version: Mars.1 Release (4.5.1)问题:安装完eclipse后发现不能双击运行程序,提醒找不到共享库The Eclipse executable launcher was unable to locate its ... -
如何“以其他用户身份运行”程序
2017-11-07 19:22:00在windows2003下,有时候我们需要以其他用户身份运行运行一些程序操作方法参考如下附图:选中"运行方式",打开以其他用户身份运行对话框窗口如下: 本文转自 cuiyingfeng 51CTO博客,原文链接:... -
免除反复输入用户名密码的以其他用户身份执行程序的程序
2008-08-26 23:07:17自制的带数据库、能记住其他用户名称密码,适合经常以其他身份执行程序的人士使用。 -
delphi 自动以管理员身份运行程序
2012-05-29 22:15:53delphi 自动以管理员身份运行程序 包含详细代码 -
Windows程序以特定用户身份运行
2017-11-06 13:45:00如果一个程序需要访问文件服务器的共享目录,却不能让执行这个程序的用户访问这个共享目录,怎么办? 解决方法:使用runas命令。 具体做法是,在本地先创建一个文件服务器授权了的用户abc,然后在控制台执行下面... -
以其他身份运行程序runasw.exe
2011-05-26 17:37:33以其他身份运行程序 比如说: 以guest用户运行浏览器,这样就能较好的防毒 使用: 拷贝程序到c:\windows 或 c:\windows\system32 目录. 然后添加快捷方式,或直接运行即可, 如: %windir%\system32\runasw.exe aaron x ... -
命令行中以管理员身份运行程序
2021-07-11 01:50:351.请问可不可以在.bat文件中输入管理员账户和密码,然后右键以管理员身份运行,在.bat文件中运行其他需要管理员权限的程序时不再弹出用户账户控制选项。2.下面是第二个问题echo offecho 正在启用服务...E:\锐捷共享... -
如何以system身份运行程序?
2021-05-14 22:11:03如何以system身份运行程序? 以下是原理 Local System(本地系统)是Windows操作系统内置的特殊账户。它拥有比Administartor更高的权限。smss.exe(会话管理器)、csrss.exe(客户端/服务器运行时子系统)、wininit.exe... -
C++ 获得管理员权限 以管理员身份运行程序
2021-01-15 08:21:49相信已经有不少人已经知道在项目设置里面要求程序必须以管理员身份启动,但有些功能还是可以在非管理员状态下执行的,我们希望在需要的时候再获取到管理员权限。有时普通用户也无法提供管理员权限,我们要想让程序也... -
ubuntu 以管理员身份运行程序
2021-05-16 15:32:18桌面环境: gnome管理员权限,也称为root权限,root用户,超级用户等,是指对于这个机器进行安装程序/设置的帐号,与使用程序的一般用户(如user)对应。在ubuntu系统里,一般情况下,只有一个管理员--root用户。这个... -
使用runas命令让域用户可以以管理员权限运行程序
2020-10-14 13:11:47如果为了某些软件而放开管理员权限似乎又不太符合安全规定,此时,我们可以使用runas命名让用户可以以管理员权限运行指定程序。 runas命令的用法如下: 例如我们想让用户以管理员身份运行CMD,可以保存如下代码成... -
VBS命令:关于以管理员身份运行程序的VBS命令
2021-01-29 14:41:271、VBS命令:以管理员权限运行VBS脚本 直接将其添加到VBS文件开头 Set WshShell = WScript.CreateObject("WScript.Shell") If WScript.Arguments.Length = 0 Then Set ObjShell = CreateObject("Shell.... -
CreateProcessAsUser 如何以当前登陆用户身份运行程序
2020-11-24 17:03:49开发中有时会遇到这样的问题,当服务...新创建的进程和服务程序依然是相同的用户身份,还是无法达到目的,只有使用CreateProcessAsUser了。 但CreateProcessAsUser的第一个参数是HANDLE hToken,该参数通常应该用Lo... -
管理员身份运行,教您如何设置以管理员身份运行程序
2021-07-14 00:57:39我们在使用电脑的时候,经常要会使用到命令提示符,那么在该怎么...部分的软件是得要以管理员身份运行才能有效的喔,要是不想每次手动选择管理员身份运行,是可以通过设置让软件默认使用,启动程序需要管理员权限主... -
Qt程序以管理员身份运行
2021-05-26 15:29:49希望Qt开发程序以管理员身份运行,只需要在pro中添加如下代码: QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS -
以system身份运行程序
2017-07-13 00:58:52Local System是Windows...Local System拥有比Administrator更高的权限,是会话管理器(Smss.exe)、Windows子系统系统(Csrss.exe)以及本地安全授权子系统(Lsass.exe)等的运行账户。 Local System账户加载默认用... -
Windows createprocess以当前登录用户权限(uac降权)运行程序
2018-05-28 11:07:52近期的工作,总是会碰到一些比较奇特的需求,比如说:在一个以管理员权限运行的程序里面,启动/运行一个非管理员/当前用户权限的程序或者服务之类。 常规来说,管理员权限下运行的程序,即便创建新进程或者启动别的... -
如何让QT程序以管理员权限运行(UAC)
2021-05-15 01:39:39C#启用管理员权限运行程序 方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ... 随机推荐 mysql表名查询sql select table_schema,table_name...