美文网首页
Linux中sudo命令详解

Linux中sudo命令详解

作者: Angry_bear | 来源:发表于2018-07-20 16:19 被阅读0次

什么是sudo?

在Linux中,经常会看到一些带sudo的命令,有好事者就要问了,sudo是什么,有什么用?

sudo是Linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,这种感觉就像是你的老师授给你当了小组长一样。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。

 

配置文件

sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoerssudo提供了一个编辑该文件的命令:visudo来对该文件进行修改,visudo使用vi打开/etc/sudoers文件,但是在保存退出时,visudo会检查内部语法,避免用户输入错误信息,操作和vim是一样的

[root@Jobs /]# visudo 
...
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 
     94 ## Allows members of the 'sys' group to run networking, software,
     95 ## service management apps and more.
     96 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
     97 
     98 ## Allows people in group wheel to run all commands
     99 %wheel  ALL=(ALL)       ALL
    100 
    101 ## Same thing without a password
    102 # %wheel        ALL=(ALL)       NOPASSWD: ALL
...
"/etc/sudoers.tmp" 112L, 3938C

通过visudo打开配置文件之后,会发现里面都是一些对配置文件的描述注释,一直往下翻,看到第92行左右,会看到有一个范例root ALL=(ALL) ALL,从左往右依次解释一下
root:表示用户名
ALL:表示允许登陆的主机,大部分情况下为ALL
(ALL):表示以谁的身份去执行,如果在()内写ALL,表示root身份
ALL:表示当前用户可执行的命令,多个命令可以用“,”分割
理所当然的, 如果在第92行的root ALL=(ALL) ALL下加一行,test1 ALL=(ALL) ALL,则表示“test1”用户在所有主机上可以“root”的身份执行所有命令,千万不要这么做,非常危险!千万不要这么做,非常危险!千万不要这么做,非常危险!(重要的事情说三遍)
 
关于如何以正确姿势来修改sudoers配置文件,下面会用示例的方式给大家展示

举个栗子

[test1@Jobs root]$ ls /root/
ls: cannot open directory /root/: Permission denied
//“test1”没有权限所有无法访问“root”家目录
[test1@Jobs root]$ sudo ls /root
//如果直接用`sudo`命令则需要让“root”用户输入密码,如果每次都要输入,太烦了,而且也不安全
PassWord:

[root@Jobs ~]#visudo

···
     92 root    ALL=(ALL)       ALL
     93 test1   ALL=(ALL)       /bin/ls 
    //在92行下面加一行,协商所需要执行的命令路径,命令路径可用“which”命令来查看
···

[test1@Jobs root]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
//会有一些提示,大概意思能力越大,责任越大

[sudo] password for test1: 
//此时提示输入“test1”用户的密码
bbr.sh  bbr.sh.1  install_bbr.log  shadowsocks.log  shadowsocks.sh  test  ystemctl status firewalld


#常见配置文件写法
[root@Jobs ~]#visudo

···
     92 root    ALL=(ALL)       ALL
     93 test1   ALL=(ALL) ALL #“test1”用户在所有主机上可以“root”的身份执行所有命令
     94 %test1  ALL=(ALL) ALL #“test1”组内用户在所有主机上可以“root”的身份执行所有命令
     95 test1   ALL=(root) /bin,!/bin/who #“test1”用户在所有主机上可以“root”的身份执行/bin下的所有命令除了who命令
     96 %test1  ALL=(ALL) NOPASSWD: ALL #“test1”组内用户在所有主机上可以“root”的身份执行所有命令不用密码
···

别名

sudoers有个骚操作,支持别名的定义

User_Alias Host_Alias Runas_Alias Cmnd_Alias
用户名 主机名 用户名 命令路径
组名(%) IP 地址 组名(%) 目录
其他User_Alias 网络地址 其他Runas_Alias 其他Cmnd_Alias

示例:

User_Alias son = son1,son2,%test1                #定义个别名叫“son”,里面有用户“son1”“son2”“test1用户组”
Cmnd_Alias ml = /bin                             #定义命令路径别叫“ml”
son ALL=(ALL) ml                                 #以别名形式写配置文件

依次类推,对User_AliasHost_AliasRunas_AliasCmnd_Alias均可进行别名定义,别名定义能很好的增加工作效率

写在最后

  如果还需要查询更多的sudo命令的用法,请到《Linux命令手册》,这应该是我第三次安利这个网站了,是不是要考虑赞助点哈~

 


相关文章

  • Linux中sudo命令详解

    什么是sudo? 在Linux中,经常会看到一些带sudo的命令,有好事者就要问了,sudo是什么,有什么用?su...

  • Linux sudo 命令详解

    导语 前文说到创建新用户的必要以及如何创建新用户。那么如果不使用 root 账号,就没有办法执行 mkdir 这些...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • Linux下sudo命令详解

    sudo命令的作用是让普通用户获得root账户的权限。 默认普通用户不在sudo组,要想用sudo命令就得把普通用...

  • Lniux的top命令

    Linux top命令详解 地址:Linux top命令的用法详细详解_南有南无-CSDN博客_linux top...

  • linux系统下c++开发

    0.1. linux知识科普 linux常用的命令sudo:sudo命令的全称为superuser do .从字面...

  • Linux命令:修改文件权限命令chmod、chgrp、chow

    转自:欲思博客»Linux命令:修改文件权限命令chmod、chgrp、chown详解 Linux系统中的每个文件...

  • Linux命令大全(手册)_Linux常用命令行实例详解_Lin

    Linux命令大全(手册)_Linux常用命令行实例详解_Linux命令学习手册 Linux 命令大全 http...

  • linux 日常记录

    scala nginx日志匹配 脚本中执行sudo命令 linux free 命令 free 命令相对于top 提...

  • Linux命令大全

    Linux命令大全(手册)_Linux常用命令行实例详解_Linux命令学习手册 http://man.linux...

网友评论

      本文标题:Linux中sudo命令详解

      本文链接:https://www.haomeiwen.com/subject/oegfmftx.html