7.9 su:切换用户

7.9.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ su命令用户将当前用户切换到指定用户或者以指定用户的身份执行命令或程序

【语法格式】

su [option] [user]
su [选项] [用户名]

说明:

​ 1)在su命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

​ 2)若命令后面的用户名省略了,则默认切换为root用户。

​ 3)从root用户切换到普通用户时,不需要任何密码,从普通用户切换到root用户时,则需要输入root密码。

【选项说明】

​ 表7-11针对该命令的参数选项进行了说明。

​ 表7-11 su命令的参数选项及说明

7.9.2 使用范例

​ **范例7-19:**由普通用户neteagle切换到root用户。

[C:\~]$ ssh neteagle@10.0.0.201Connecting to 10.0.0.201:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sat Oct 17 20:44:31 2020
Wellcome to Linux!
[neteagle@centos7 ~]$ whoami   #当前登录的用户为普通用户neteagle。
neteagle
[neteagle@centos7 ~]$ su root  #切换用户,若切换的用户为root,则可以省略不写。
Password:   #这里当然就是root用户的密码了。[root@centos7 /home/neteagle]# env |egrep    "USER|MAIL|PWD|LOGNAME"       #查看当前登录用户root的环境变量。
USER=neteagle
MAIL=/var/spool/mail/neteagle
PWD=/home/neteagle #已经登录到root了,为什么家目录还是/home/neteagle呢?
LOGNAME=neteagle

​ 细心的读者应该已经看到了,如果使用su而不加上“-”这个参数,那么切换前的用户的环境信息还会存在,这会引起很多麻烦,甚至还会出现意想不到的结果。因此,切换用户时,最好是"su - 用户名"。这是生产场景中标准的切换用户的操作方法。

​ 退出到普通用户重新测试,命令如下:

[root@centos7 /home/neteagle]# exit
[neteagle@centos7 ~]$ su - root    #第二种切换用户的方式,使用参数"-",root可省略。
Password:
Last login: Sun Oct 18 16:32:33 CST 2020 on pts/1
[root@centos7 ~]# env |egrep "USER|MAIL|PWD|LOGNAME" #再次查看环境变量。
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root

​ 这回环境变量的内容都已经切换到root下了,这里需要提醒一下的是,不只是切换到root,切换到其他用户也是一样。

​ 从上面的范例可以得出如下结论。

  • "su 用户名"虽然能够切换到对应用户,但是登录后的环境变量信息有些还是切换前用户的环境变量信息。

  • “su - 用户名”不但能切换到相应的用户,还能将登录后的环境变量一并切换,这是标准规范的操作方法。

  • ​ **范例7-20:**如何让系统在每次开机时自动以普通用户身份启动指定服务脚本?

    [neteagle@centos7 ~]$ tail -1 /etc/rc.local  #在开机启动文件/etc/rc.local中写入启动命令。
    su - neteagle -c '/bin/sh /server/scripts/deploy.sh'  #以普通用户身份执行脚本,但并不是在用户的下面。
    

    ​ **提示:**除此之外还有很多方法,例如,可以进入到普通用户下再执行该脚本。

    ​ 通过普通用户运行服务是一个很好的提升系统安全性的办法,在生产环境中,大多数服务都可以通过普通用户启动(不使用特权端口),而不用root用户启动。这样就可以使系统的安全性又提高一个等级,同时使用普通用户管理就可以了,管理者不需要具体root权限。

7.9.3 su命令总结

  • 普通用户切换到root用户,可使用su -或su - root,但必须输入root密码才能完成切换。
  • root用户切换到普通用户,可使用“su - 普通用户名”的写法。不需要输入任何密码就能完成切换。在CentOS 5.X系统中,切换到普通用户后,在执行一些命令如ifconfig时,可能会遇到环境变量PATH路径问题,也会因此找不到某些命令(一般是/sbin、/usr/sbin等下面的命令),这时就需要使用全路径执行或者调整配置普通用户的PATH变量内容,CentOS 6和CentOS 7不存在这方面的问题。
  • 如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,则可以使用"su - 用户名 -c 命令"的方式。

7.10 visudo:编辑sudoers文件

7.10.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ visudo命令是专门用来编辑/etc/sudoers这个文件的,同时它还提供了语法检查等功能。/etc/sudoers文件是sudo命令(见下文)的配置文件。

【语法格式】

visudo [option]
visudo [选项]

​ **说明:**在visudo命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

【选项说明】

​ 表7-12针对该命令的参数选项进行了说明。

​ 表7-12 visudo命令的参数选项及说明

7.10.2 使用范例

​ **范例7-21:**执行visudo对普通用户neteagle和younggirl授权的例子。

​ 执行如下visudo命令,即可打开sudo的配置文件进行编辑:

[root@centos7 ~]# visudo    #相当于直接执行vim /etc/sudoers编辑,但使用命令方式更安全,推荐此种方式。

​ 在/etc/sudoers文件的大约第100行下面添加需要提升为root权限的普通用户名及对应权限,格式如下:

neteagle        ALL=(ALL)       ALL#此行是第100行,将neteagle提权为root身份。
younggirl ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
#授权younggirl使其可以以root身份添加和删除用户权限。
#分别对neteagle和younggirl两个用户做不同的授权,如上。
:wq

​ 其中,visudo或者vim /etc/sudoers,可在100行下面加入,也可以在其他位置加入。

​ 上述授权内容对应的说明见表7-13。

​ 表7-13 sudo提权配置说明

待授权的用户或组 机器=(授权角色) 可以执行的命令
user MACHINE= COMMANDS
neteagle ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel

​ **提示:**如果younggirl用户被授予上述权限,那么它可以在所有的机器上以所有的角色运行useradd、userdel命令,而neteagle用户则会拥有与root相同的权限,并且可以切换到root账户。

​ 如果是针对用户组,则对应的授权命令如下:

​ %用户组 机器=(授权使用哪个角色的权限) /usr/sbin/useradd

​ 通过sudo命令进行系统的授权管理的目的是,既能让运维人员正常工作,又不会威胁到系统的安全,还可以审计用户使用sudo的提权操作命令,默认的用户时无法获取root权限的。、

​ 为了管理方便,工作中可以为neteagle授权ALL权限,neteagle既可管理整个系统,平时也可以使用neteagle用户处理工作,而不使用root用户。

​ **范例7-22:**检查sudoers文件语法的例子。

​ 有的时候,用户并不是使用visudo(保存时会自动检查语法)编辑的sudoers文件,而是使用vim或者echo等命令编辑的sudoers文件,此时就需要执行如下命令检查编辑文件的语法是否正确,如果语法不正确,则可能会导致授权无法生效的问题。

​ 例如,工作中若有批量管理用户的需求,那么使用快速操作命令增加sudo授权,就 需要单独执行语法检查,快速操作命令如下:

[root@centos7 ~]# \cp /etc/sudoers /etc/sudoers.ori
[root@centos7 ~]# echo "neteagle ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
[root@centos7 ~]# tail -1 /etc/sudoers
neteagle ALL=(ALL) NOPASSWD: ALL

​ 上述操作是直接追加内容到sudoers文件,并没有进行语法检查,因此需要单独执行语法检查命令:

[root@centos7 ~]# visudo -c #使用-c选项进行语法检查。
/etc/sudoers: parsed OK

L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo相关推荐

  1. L48.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- last、lastb和lastlog

    7.17 last:显示用户登录列表 7.17.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ last命令能够从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表. ...

  2. L46.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- w和who

    7.13 w:显示已登录用户信息 7.13.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ w命令可以显示已经登录系统的用户,并显示用户正在执行的命令. ​ [语法格式] w [op ...

  3. L84.linux命令每日一练 -- 第11章 Linux系统管理命令 -- rpm和yum

    11.19 rpm:RPM包管理器 11.19.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ rpm命令的全称是Red Hat Package Manager(Red Hat包管理 ...

  4. L32.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- dmesg和stat

    5.3 dmesg:系统启动异常诊断 5.3.1 命令详解 ​ [命令星级] ★★★☆☆ ​ [功能说明] ​ dmesg用于显示内核环形缓冲区(kernel-ring buffer)的内容.在进行系 ...

  5. L39.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- scp和rsync

    6.5 scp:远程文件复制 6.5.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ scp命令用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性.scp命令每次都是全 ...

  6. L38.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- zip和unzip

    6.3 zip:打包和压缩文件 6.3.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ zip压缩格式是Windows与Linux等多平台通用的压缩格式.和gzip命令相比,zip命 ...

  7. L23.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- iconv和dos2unix命令

    3.15 iconv:转换文件的编码格式 3.15.1 命令详解 ​ [命令星级] ★★★☆☆ ​ [功能说明] ​ iconv命令用于转换文件的编码格式. ​ [语法格式] iconv [optio ...

  8. L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令

    4.2 sed:流编辑器 4.2.1 sed命令语法及参数说明 ​ [命令星级] ★★★★★ ​ [功能说明] ​ sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器.它是Linu ...

  9. L24.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- diff和vimdiff命令

    3.17 diff:比较两个文件的不同 3.17.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ diff命令可以逐行比较纯文本文件的内容,并输出文件的差异. ​ [语法格式] di ...

  10. linux设置用户密码、查看linux用户信息、root用户管理普通用户(passwd命令使用)

    1 切换root用户和给root用户设置密码 1.1 切换到root用户 1.使用su 命令 或 su root命令切换到root用户的时候报错:su: Authentication failure ...

最新文章

  1. unity怎么实现人脸追踪_Unity 2019.2 beta为AR增加面部追踪、2D图像追踪、3D对象追踪等功能...
  2. Hibernate 二级缓存
  3. [C++11 std::thread] 使用C++11 编写 Linux 多线程程序
  4. 汇编_指令_FLAGS
  5. mysql关于日期的函数_MySQL中关于日期函数汇总
  6. beijing olympics - a travesty
  7. Qt文档阅读笔记-Button QML Type官方解析及实例
  8. Ubuntu 18.04-20.04开机自动root用户登录(测试可用)
  9. iOS项目中常见定时器
  10. linux脚本初尝滋味-----编写与执行
  11. 好用的python表白神器_Python|520表白神器
  12. android4.3 Bluetooth分析之扫描分析
  13. 【图像重建】基于matlab卷积神经网络的图像超分辨率重建【含Matlab源码 1816期】
  14. gitLab下载安装和使用教程
  15. python毕业设计作品基于django框架外卖点餐系统毕设成品(6)开题答辩PPT
  16. SPSS应用于均值检验
  17. CSRF跨站请求伪造漏洞
  18. 绕线画算法python_绕字的意思、绕的繁体字、绕的笔顺笔画、绕字部首和繁体字绕的意思...
  19. 微信小程序在线考试项目开发-注册登录功能
  20. 成都拓嘉启远:拼多多万人团要不要去参加

热门文章

  1. 微软收购雅虎不如收购摩托罗拉
  2. 在线 PHP运行工具、数据库可控
  3. 用于Red Hat Enterprise Linux 6 (AMD64/EM64T)的HP智能阵列B140i SATA RAID控制器驱动程序 下载该文件即表示您同意惠普软件许可协议的条款和条件。
  4. JQuery 简单表单验证
  5. html广告位代码,javascript实现一个简单的广告位
  6. 为啥互联网都使用缓存
  7. 初识C++——类与对象的详细说明(二)
  8. camera成像能力-清晰度(Resolution,Sharpen)
  9. 20000条笑话保证笑死你
  10. XMLHttpRequest请求跨域问题解决方案