su命令与sudo服务

内容前导:

        我们平时在Linux实验环境中,为了避免系统的一些安全限制,大部分情况下都是使用超级管理员账号root进行实验操作的。但在生产环境中,往往不能直接使用root账户去执行一切的操作,因为这会引起不当的安全问题。但是使用普通账户的话又会有很多的权限束缚,从而影响工作的进展。

        那么今天我想给大家分享一下su命令及sudo服务,先给大家简单介绍一下:su命令可以解决切换用户身份的需求,可以在当前用户不退出的情况下,顺利地切换到其他用户;sudo命令可以给普通用户提供额外的权限完成只有root用户可以完成的操作。


学习内容:

        1.切换用户登录格式:su - 用户名,没错,su命令及用户名之间有一个减号“-”,这里强烈建议大家在切换账号的时候加上,这意味这完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不保留原始信息。

        2.另外,从root账户切换到其他账户是不需要输入密码的;但是从其他普通账户切换到root账户需要输入密码。

        3.使用sudo命令可以给普通用户提供额外的权限来完成原本只有root管理员才能完成的任务,可以限制用户执行指定的命令,记录用户执行过的每一条命令,集中管理用户与权限,以及可以在验证密码后的一段时间无须让用户再次验证密码。常见的参数如表所示。

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u以指定的用户身份执行命令
-k清空密码有效时间,下次执行sudo时需要再次进行密码验证
-b在后台执行指定的命令
-p更改询问密码的提示语

         4.visudo命令用于编辑、配置用户sudo的权限文件,语法格式为“visudo 【参数】”,这是一条会自动调用vi编辑器来配置/etc/sudoers权限文件的命令,能够解决多个用户同时修改权限而导致的冲突问题。不仅如此,visudo 命令还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错提醒。


实验输出:

实验一:使用su命令切换用户

[lisi@client2 ~]$ su - root
Password: 此处输入用户密码
[root@client2 ~]# 

 实验二:使用visudo命令配置lisi这个用户的sudo权限文件,在配置权限文件时,按照如下格式进行配置。

        谁可以使用     允许使用的主机=(以谁的身份)  可执行命令的列表   

step1: 

[root@client2 ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
lisi    ALL=(ALL)       ALL

step2:切换到普通用户,访问/root目录

[lisi@client2 ~]$ ls /root
ls: cannot open directory '/root': Permission denied
[lisi@client2 ~]$ sudo ls /root
[sudo] password for lisi: 
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  sshwl      Videos
Desktop		 Downloads  Music		  Public    Templates

 可以看到,作为一名普通用户,是看不到/root目录的,但是只需要在想执行的命令前加上sudo即可。

实验三:考虑到生产环境中是不可能给普通用户开放所用的权限的,因此我们需要授权符合需要的权限即可,即最小授权原则 。例如我们普通用户lisi只能执行reboot命令,我们需要先用whereis命令查找reboot命令的绝对路径,然后写入sudo配置文件中。

//在没有配置前,lisi是无法执行reboot命令的。
[lisi@client2 ~]$ sudo reboot
[sudo] password for lisi: 
Sorry, try again.
[sudo] password for lisi: 
lisi is not in the sudoers file.  This incident will be reported.
[root@client2 ~]# whereis reboot  //先找出reboot的绝对路径
reboot: /usr/sbin/reboot /usr/share/man/man2/reboot.2.gz /usr/share/man/man8/reboot.8.gz
[root@client2 ~]# visudo   //配置sudo配置文件过程
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
lisi    ALL=(ALL)       /usr/sbin/reboot
[lisi@client2 ~]$ sudo reboot  //lisi用户执行重启命令成功
[sudo] password for lisi: 
Connection to client2 closed by remote host.
Connection to client2 closed

 实验四:在每次执行sudo命令都要输密码,会不会太麻烦了,这是可以添加NOPASSWD参数,这样用户再下次执行时就不用密码验证了。

[root@client2 ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
lisi    ALL=(ALL)       NOPASSWD:/usr/sbin/reboot

注意:

  • 请大家注意visudo命令只有root管理员才可以执行,普通用户使用时权限不足,无法修改sudo配置文件。
  • 如果只允许普通用户执行指定的命令,切记再配置文件里协商改命令的绝对路径,绝对路径用whereis查找。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值