zoukankan      html  css  js  c++  java
  • Centos7--sudo的使用和配置

    1 sudo是什么

    Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。

    2 sudo的特点

    sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:

    •    sudo能够限制指定用户在指定主机上运行某些命令。
    •    sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,且能将日志传到中心主机或者日志服务器。
    •    sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
    •    sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”。

    3 sudo的命令

    3.1 sudo条目语法

     who host=(runas)  TAG:command

    • who :运行者用户名
    • host:主机
    • runad:以那个身份运行
    • TAG:标签
    • command:命令

    样例: 

    oracle ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

    注:上面的意思就是:oracle用户可以在任何地方以root身份无密码执行useradd有密码执行usermod。

    3.2 别名(宏)

     此外sudo还支持别名的定义,我们通过引用定义好的别名可以提供工作效率:
           who                      User_Alias
           which_hosts          Host_Alias
           runas                    Runas_Alias
           command             Cmnd_Alias

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

    3.3 使用visudo编辑配置文件(/etc/sudoers)

    虽然我们可以使用vim直接来编辑sudo的配置文件,但sudo提供了更加智能的编辑命令visudo,它能在编辑配置文件的同时帮我们检查语法错误,并在错误时提供快捷的返回功能,相当nice。

    注意在你使用visudo命令前,你有必要设置下EDITOR=vim来替换默认的vi,可以打开的时候语法高亮,看起来起来舒服多了。

    [root@centos74 ~]$ vim ~/.bash_profile                   #编辑profile文件
    # 添加如下行
    export EDITOR=vim
    
    [root@centos74 ~]$ source ~/.bash_profile                # 让其立即生效

    /etc/sudoers是sudo的主配置文件,如果我们想设置sudo设置,建议在/etc/sudoers.d/下面创建文件编辑。

    [root@centos74 sudoers.d]$ visudo  -f /etc/sudoers.d/oracle2          # 这里我给oracle2用户一些sudo权限,命令会在sudoers.d目录下创建一个文件的。这个文件名貌似使用.conf结尾貌似不可以的。

    3.4 常用选项

    • -l:查看当前用户可以使用的所有sudo命令
    •  -g:以指定组执行
    • -u:以指定用户身份执行
    • -K:移除时间戳文件
    • -k:时间戳为元年(下次就必须输入密码)
    • -v:更新时间戳,时间戳默认5分钟,五分钟到就需要再次密码,使用-v可以续5分钟。

    关于时间戳这个东西。我们默认使用sudo执行命令的时候,第一次是需要输入密码的,短时间内再次执行sudo命令是不需要再次输入密码的。这个时间是有时间戳控制的。我们可以指定-k修改时间戳为元年,下次在sudo执行命令就必须输入密码。

    3.5常用实例讲解

    3.5.1 oracle用户可以在任何地点以任何的身份执行所有命令,等同于root。

    oracle ALL=(ALL)        ALL

    3.5.2 oracle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和usermod(需要密码).

    oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

    这样oracle2就可以免密码useradd,有密码(密码为oracle2的自身密码)使用userdel。

    使用方式如下

    [oracle2@centos74 ~]$ useradd test001                               # 直接使用命令是不可以的。
    -bash: /usr/sbin/useradd: Permission denied
    [oracle2@centos74 ~]$ sudo useradd test001                          # 必须加sudo
    [oracle2@centos74 ~]$ id test001                                    # 查看添加的用户信息
    uid=1031(test001) gid=1032(test001) groups=1032(test001)

    3.5.3 oracle3用户只能在192.168.1.120主机远程登录并以root身份执行ifconfig eth0命令。

    Cmnd_Alias NETCMND = /sbin/ifconfig eth0
    oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND

    3.5.4 oracle4用户可以执行/usr/sbin下的所有命令除了/usr/sbin/userdel

    oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel

    3.5.5 oracle5用户可以cat /var/log/secure*的文件

    oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *

    注意这个如果不加!后面的内容,用户可以执行如下命令cat /var/log/secure /etc/shadow 这样的命令随便查看系统的文件。很危险。

    3.6 sudo的日志审计

    为了能够明确的追究责任,sudo还提供了人性化的日志功能,在/var/log/secure日志文件中可以查看到,用于记录所有sudo类用户的所有动作。

  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/huanglinxin/p/9101872.html
Copyright © 2011-2022 走看看