su命令(简称是:substitute或者switchuser)用于切换到另一个用户,没有指定用户名,则默认情况下将以root用户登录。
为了向后兼容,su默认不改变当前目录,只设置环境变量HOME和SHELL(如果目标用户不是根用户,则加上USER和LOGNAME)。
常用选项-c,--command=[command]:指定执行的命令,然后恢复到原来的用户。
-,-l,--login:将shell作为登录shell启动,其环境类似于实际登录。
1.清除所有的环境变量,除了`TERM`和通过--whitelist-environment选项指定的变量。2.初始化环境变量:HOME,SHELL,USER,LOGNAM,PATH。3.变更目标用户的家目录。4.设置shell的第一个参数,即argv[0]为-,使shell成为登录shell。
-m,-p,--preserve-environment:保留整个环境变量,例如,不会更新HOME,SHELL,USER,LOGNAME,此选项与--login是互斥的,不要同时使用。
-s,--shell=[shell]:切换用户后指定shell而不是使用默认shell,shell使用的顺序如下:
1.通过`--shell`指定的优先级最高。2.如果`--preserve-environment`选项指定了,且设置了`SHELL`环境变量,则使用此shell。3.目标用户的passwd条目中列出的shell4.以上都没有,则默认使用`/bin/sh`
-w,--whitelist-environment=[list]:环境变量白名单,即如果指定了--login时,不会重置白名单中指定的环境变量,但忽略HOME、SHELL、USER、LOGNAME和PATH,list格式通过逗号分隔,
-h,--help:打印帮助信息。
-V,--version:打印版本信息。
使用实例切换到普通用户
su-phoenix或suphoneix
切换到root用户
su-或su
切换用户时指定命令
su-clssu-c'ls-l/home/username'phoenix切换到普通用户并指定命令,命令指定了选项和参数则用引号引上。
切换的时候指定shell
su-s/usr/bin/zsh
保留环境
su-pphoenix
对于像Ubuntu没有root密码,可使用如下方式切到root
sudosu-su源码


sudo简称SuperUserDo,它允许非root用户运行通常需要超级用户权限的其他Linux命令。
获得root权限的方式直接使用sshroot登录到主机
sshroot@[server_domain_or_ip]
使用su切换到root用户
su-
使用sudo临时获取root权限来执行需要root权限的命令,此时不会产出一个新的shell。
sudo[command]什么是sudoers?
sudo的配置文件即为:sudoers,位置在:/etc/sudoers
sudoers文件指示系统如何处理sudo命令(每个sudo用户可以做什么)。
什么是/etc/?/etc/是/etc/sudoers同级配置文件目录,一般情况不建议直接修改/etc/sudoers而是在/etc/目录下面新建自定义配置文件,配置规则与/etc/sudoers相同,此中任何没有以~结尾的,且不包含.的文件会视作正确的配置文件,sudo会读取所有配置文件追加到sudo配置中。
什么是Visudo?由于/etc/sudoers任何语法错误将可能会引起系统崩溃的风险,而使用visudo会对配置文件作语法检查,防止配置错误阻塞sudo操作。
visudo默认会使用vi作为文本编辑器,也可以配置visudo使用的编辑器。
sudoupdate-alternatives--configeditor
OutputThereare4choicesforthealternativeeditor(providing/usr/bin/editor).SelectionPathPriorityStatus------------------------------------------------------------*0/bin/nano40automode1/bin/ed-100manualmode2/bin/nano40manualmode3/usr/bin//usr/bin/[*],ortypeselectionnumber:通过编号来选择合适的编辑器
exportEDITOR=`which[编辑器名称]`
.~/.zshrc或source~/.zshrc加载生效怎么修改sudoers文件?
使用sudovisudo会打开/etc/sudoers文件
sudoers权限行解释:
rootALL=(ALL:ALL)ALL%adminALL=(ALL)ALL号开头的被视作注释,但此处enteranincorrectpasswordheretoseetheresultsYourmindjusthasn'tbeenthesamesincetheelectro-shock,hasit?[sudo]passwordfordemo:会侮辱用户(假笑):电击之后你的思维就不一样了,是吗?
打印版本号
sudo-V
打印帮助信息
sudo-h或-help
在后台运行命令
sudo-b[command]
非交互式运行sudo,不询问密码
sudo-n[command]
指定运行的shell
sudo-s[command]如果设置了shell环境变量,-s选项将运行shell指定的shell,或者运行文件passwd中指定的shell。
设置家目录
sudo-H[command]-H选项将HOME环境变量设置为目标用户的主目录(默认为root),如passwd中指定的。默认情况下,sudo不修改HOME。
停止解析命令行参数
sudo--[command]
在一行运行多个命令
sudols;whoami;hostname多个命令用分号隔开sudo官网

看SudoManual、SudoersManual、VisudoManual即可






