当前位置:首页 > 机械智慧 > 正文

Linux 著名的sudo、su是什么?怎么用?

一、su什么是su?su命令(简称是:substitute或者switchuser)用于切换到另一个用户,没有指定用户名,则默认情况下将以root用户登录。为了向后兼容,su默认不改变当前目录,只设置环境变量HOME和SHELL(如果目标用户不是根用户,则加上USER和LOGNAME)。常用选项-c...

一、su什么是su?su命令(简称是:substitute或者switchuser)用于切换到另一个用户,没有指定用户名,则默认情况下将以root用户登录。为了向后兼容,su默认不改变当前目录,只设置......

一、su什么是su?

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源码


manpages


二、sudo什么是sudo?

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即可


最新文章