用其他用户的身份执行命令:sudo

用其他用户的身份执行命令:sudo

上一节中了解了su命令,并且也知道了这个命令存在的缺陷。而sudo则通过一种可配置的方式解决了这个问题。该命令的使用方式是在sudo后跟上需要执行的命令,比如说sudo passwd user1,即使用root的身份修改user1的密码。运行该命令时,系统首先检查/etc/sudoers,判断该用户是否有执行sudo的权限,在确定有执行权限后,系统要求用户输自己的密码,如果密码输入正确,则会以root用户的身份运行passwd user1命令。

在演示sudo命令之前,首先需要设置/etc/sudoers这个配置文件。当然,可以使用一些常见的编辑器来编辑这个文件,比如vi或者vim编辑器等(常见编辑器的使用方法将在第9章中讲解),但是考虑到这个配置文件的重要性,Linux提供了专门编辑这个文件的方式,就是使用命令visudo来编辑这个文件,它的好处是可以在编辑后保存退出时自动检查语法设置,以防止不小心配置错误而造成无法使用sudo命令。该命令如下所示:
 

 
 
  1. [root@localhost ~]# visudo  
  2. ## Sudoers allows particular users to run various commands as  
  3. ## the root user, without needing the root password.  
  4. ##  
  5. ## Examples are provided at the bottom of the file for collections  
  6. ## of related commands, which can then be delegated out to particular  
  7. ## users or groups.  
  8. ##  
  9. ## This file must be edited with the 'visudo' command.  
  10. ......(略去内容)......  
  11. ## Allow root to run any commands anywhere  
  12. root    ALL=(ALL)       ALL  
  13. john    ALL=(ALL)       ALL  #复制上一行的内容,并修改用户名为john  
  14.  
  15. ## Allows members of the 'sys' group to run networking, software,  
  16. ## service management apps and more.  
  17. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS  
  18.  
  19. ## Allows people in group wheel to run all commands  
  20. # %wheel        ALL=(ALL)       ALL  
  21.  
  22. ## Same thing without a password  
  23. # %wheel        ALL=(ALL)       NOPASSWD: ALL  
  24.  
  25. ## Allows members of the users group to mount and unmount the  
  26. ## cdrom as root  
  27. # %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom  
  28.  
  29. ## Allows members of the users group to shutdown this system  
  30. # %users  localhost=/sbin/shutdown -h now 

修改完成后,使用用户john登录,然后再尝试使用sudo给别的用户修改密码,系统首先要求输入用户john的密码,验证通过后,就可以设置其他用户的密码了,如下所示:
 

 
 
  1. [john@localhost ~]$ sudo passwd user1  
  2. [sudo] password for john:  #这里输入用户john的密码  
  3. Changing password for user user1.  
  4. New UNIX password:  #输入user1的新密码  
  5. Retype new UNIX password:  #再次输入user1的新密码  
  6. passwd: all authentication tokens updated successfully. 

加入的“john ALL=(ALL)  ALL”这一行代表的意思是,john这个用户(第一列)可以从任何地方登录后(第二列的ALL)执行任何人(第三列的ALL)的任何命令(第四列的ALL)。还可以定义某一个组的sudo权限,比如“%john ALL=(ALL) ALL”可以让所有属于john用户组的用户从任何地方登录后执行任何人的任何命令。

正如上面例子所演示的,只需要知道自己的密码就可以使用sudo执行任何命令,这样方便多了。但是每次都需要输入一遍密码也是比较麻烦的事情,想要实现不需要输入密码就可以执行命令,可以在最后一个ALL前添加“NOPASSWD:”,如下所示:
 

 
 
  1. john    ALL=(ALL)       NOPASSWD:ALL 

这样用户john在使用sudo时就不再需要输入密码了。实际上,将最后一个参数设置为ALL是很不安全的,因为这意味着用户实际拥有了全部的系统权限,和root的权限是一致的,在工作中可以根据用户实际的工作内容定义用户可以sudo执行的命令列表。假设用户john由于工作需要,经常要重启或者关闭服务器,那么就可以进行如下设置:
 

 
 
  1. john    ALL=(ALL)       NOPASSWD:/sbin/shutdown, /usr/bin/reboot 

严格来说,sudo并不是真的切换了用户,而是使用其他用户的身份和权限执行了命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值