zoukankan      html  css  js  c++  java
  • linux用户权限 -> 系统用户管理

    用户基本概述:

    Linux用户属于多用户操作系统,在windows中,可以创建多个用户,但不允许同一时间多个用户进行系统登陆,但是Linux可以同时支持多个用户同时登陆操作系统,登陆后互相之间并不影响。

    用户和组存在的意义
    1.系统上的每一个进程(运行的程序)都需要特定的用户运行 2.每一个文件都有特定的用户拥有 3.访问一个文件或目录受到用户的限制 4.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

    查看当前登录的用户信息:

    [root@web03 ~]# id
    uid=0(root) gid=0(root) groups=0(root)
    [root@web03 ~]# useradd oldboy
    [root@web03 ~]# id oldboy
    uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)
    [root@web03 ~]# su - oldboy 
    [oldboy@web03 ~]$ id
    uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)
    [oldboy@web03 ~]$ 

    用户分类:

    0       超级管理员(拥有最高权限)
    1-200    系统用户,由系统分配给系统进程使用
    201-999   系统用户,用来运行服务账户,不需要登陆系统(动态分配)
    1000+     常规普通用户 
    注意: 在CentOS7系统之前, UID1
    -499用于系统用户, 而UID 500+则用于普通用户。

    用户相关配置文件:

    用户的信息存放在/etc/passwd用户的密码都保存在/etc/shadow这两个文件是linux系统中最重要的文件之一。
    如果没有这两个文件或者这两个文件出问题,会导致无法正常登录linux系统。

    /etc/passwd 账户文件

    [root@node1 ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    // /etc/passwd由 ':' 为分割符, 分为7个字段,每个字段的具体含义如下: 字段名称 注释说明 1.用户名称 //用户的账号名称 2.密码占位符 //存放账户的口令,暂用x表示,密码保存在/etc/shadow 3.用户的UID //用户标识号 4.用户基本组GID //组标识号 5.用户注释 //用户详细信息 6.用户家目录 //root家目录是/root普通用户家目录存在/home/username(可自定义) 7.用户登录Shell //用户登录Linux使用的shell #cat /etc/shells

    /etc/shadow 用户密码文件

    [root@xuliangwei ~]# tail -1 /etc/shadow
    bgx1:!!:16312:0:99999:7:::
    
    //  /etc/shadow由 ':' 为分割符, 分为9个字段,每个字段的具体含义如下:
    字段名称                       注释说明
    1.用户登陆名             //用户的账号名称
    2.加密后的密码            //用户密码,这是加密过的口令(未设密码时为!!)
    3.最近一次密码更改时间     //从1970年到最近一次更改密码时间之间过了多少天
    4.密码最少使用几天        //密码最少使用几天才可以更改密码(0表示无限制)
    5.密码最长使用几天      //密码使用多少天需要修改密码(默认99999永不过期)
    6.密码到期前警告期限     //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
    7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
    8.账户到期时间        //从1970年起,账户在这个日期前可使用,到期后失效。
    9.标志                  //保留

    使用chage更改用户密码密码使用情况

    -d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
    -m //设置用户两次改变密码之间使用"最小天数"
    -M //设置用户两次改变密码之间使用"最大天数"
    -W //设置密码更改警告时间 将过期警告天数设为“警告天数”
    -I //设置密码过期天数后, 密码为失效状态
    -E //设置用户过期时间, 账户失效后无法登陆
    -l //显示用户信息
    
    //修改时间为2014年08月31日,和图中时间匹配,方便后续验证
    [root@xuliangwei ~]# date -s '20140831'
    Sun Aug 31 00:00:00 CST 2014
    [root@xuliangwei ~]# date
    Sun Aug 31 00:00:01 CST 2014
    [root@xuliangwei ~]# useradd bgx1
    [root@xuliangwei ~]# echo "123" |passwd --stdin bgx1
    [root@xuliangwei ~]# tail -1 /etc/shadow
    bgx1:!!:16312:0:99999:7:::
    
    //设置最近一次修改密码时间
    [root@xuliangwei ~]# chage -d "2014-09-01" bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:0:99999:7:::
    
    //设置最短使用密码时间
    [root@xuliangwei ~]# chage -m 2 bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:99999:7:::
    
    //设置密码最长使用时间
    [root@xuliangwei ~]# chage -M 15 bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:15:7:::
    
    //设置密码警告时间
    [root@xuliangwei ~]# chage -W 6 bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:15:6:::
    [root@xuliangwei ~]# chage -W 7 bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:15:7:::
    
    //设置密码过期时间
    [root@xuliangwei ~]# chage -I 5 bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:15:6:5::
    
    //设置用户过期时间
    [root@xuliangwei ~]# chage -E "20115-08-31" bgx1
    [root@xuliangwei ~]# tail -n1 /etc/shadow
    bgx1:!!:16314:2:15:6:5:6627567:
    
    [root@xuliangwei ~]# chage -l bgx1
    Last password change            : Sep 01, 2014       //最近一次更改密码时间
    Password expires                : Sep 16, 2014      //密码过期时间
    Password inactive               : Sep 21, 2014     //密码失效时间
    Account expires                 : Aug 31, 2015     //用户失效时间
    Minimum number of days between password change      : 2  //密码最短使用时间
    Maximum number of days between password change      : 15 //密码最长使用时间
    Number of days of warning before password expires   : 7 //密码过期前警告天数
    
    //如何验证,只调整时间为如下进行验证:
    
    1.验证普通用户是否能修改密码, 不需要调整时间。
    
    2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
    [root@xuliangwei ~]# date -s "2014-09-12"
    
    3.普通用户登陆系统后, 强制要求修改密码
    [root@xuliangwei ~]# date -s "2014-09-18"
    
    4.普通用户登陆系统后, 提示账户已过期
    [root@xuliangwei ~]# date -s "2014-09-23"

    添加用户:

    添加用户前需要确定

    确定用户的默认组是否有特殊要求
    确定用户是否允许登陆
    确定用户的密码策略
    确定用户的有效期
    确定用户的uid是否有特殊要求

    1.使用useradd命令新增用户, 注意: adduser命令软链接指向useradd命令

    '-u' 指定用户的UID,不能和现有ID冲突
    '-g' 指定用户用户默认基本组
    '-G' 指定用户附加组,用逗号隔开添加多个附加组
    '-d' 指定用户家目录
    '-c' 指定用户注释信息
    '-M' 不建立家目录
    '-s' 指定用户默认shell
    '-r' 创建系统账户, 没有家目录
    
    
    //创建bgx用户,指定UID5001,基本组students 附加组sa,dba 注释信息:2018 new student, 登陆的shell:/bin/bash
    [root@xuliangwei ~]# groupadd sa
    [root@xuliangwei ~]# groupadd dba
    [root@xuliangwei ~]# groupadd students
    [root@xuliangwei ~]# useradd -u 5001 -g students -G sa,dba -c "2018new student" -d /home/bgx -s /bin/bash bgx
    [root@xuliangwei ~]# tail -1 /etc/passwd
    bgx:x:5001:505:2017 new student:/home/bgx:/bin/bash
    
    //创建系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
    [root@node1 ~]# useradd mysql -M -s /sbin/nologin
    [root@node1 ~]# useradd -r dba -s /sbin/nologin

    2.使用usermod命令修改用户组

    '-u'    修改用户的UID
    '-g'    修改用户所属的基本组GID
    '-G'    修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组
    '-a'    追加更多的附加组, 必须和-G使用: -aG 追加附加组
    '-m'    家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置
    '-d'    指定用户的家目录新位置  
    '-c'    修改用户的注释信息 
    '-s'    更改用户使用的shell
    '-l'    更改用户登录名
    '-L'    锁定用户
    '-U'    解锁用户
    
    
    [root@xuliangwei ~]# grep "bgx" /etc/passwd
    bgx:x:5001:505:2018 new student:/home/bgx:/bin/bash
    
    //修改用户uid,gid, 附加组, 注释信息, 用户家目录, 登录shell, 登录名
    
    //建立组,指定组gid
    [root@xuliangwei ~]# groupadd -g 5008 network_sa
    [root@xuliangwei ~]# groupadd -g 5009 devops
    
    //修改用户属性
    [root@xuliangwei ~]# usermod -u 6001 -g5008 -a -G 5009 -c "2019 new student" -md /bgx -s /bin/sh -l bgx_xuliangwei bgx
    
    //检查是否修改成功
    [root@xuliangwei ~]# grep "bgx" /etc/passwd
    bgx_xuliangwei:x:6001:5008:2019 new student:/bgx:/bin/sh
    
    [root@xuliangwei ~]# id bgx_xuliangwei
    uid=6001(bgx_xuliangwei) gid=5008(network_sa) groups=5008(network_sa),503(sa),504(dba),5009(devops)
    
    //验证家目录
    [root@xuliangwei ~]# ll -d /bgx
    drwx------. 2 bgx_xuliangwei network_sa 4096 2014-09-23 00:13 /bgx
    
    
    锁定用户
    [root@xuliangwei ~]# echo "123" |passwd --stdin bgx_xuliangwei
    [root@xuliangwei ~]# usermod -L bgx_xuliangwei
    //无法正常登录系统
    ➜  ~ ssh bgx_xuliangwei@192.168.56.11
    bgx_xuliangwei@192.168.56.11's password:
    Permission denied, please try again.
    
    解锁用户
    [root@xuliangwei ~]# usermod -U bgx_xuliangwei
    //正常登录系统
    ➜  ~ ssh bgx_xuliangwei@192.168.56.11
    bgx_xuliangwei@192.168.56.11's password:
    Welcome to Aliyun Esc Linux
    -sh-4.1$

    3.检查用户登陆情况

    [root@xuliangwei ~]# who
    xuliangwei pts/0        2017-10-30 09:30 (192.168.56.2)
    bgx_xuliangwei pts/1    2014-09-23 01:33 (192.168.56.2)
    root     pts/2          2017-10-30 07:13 (192.168.56.2)
    
    [root@xuliangwei ~]# w
     01:43:18 up 1 day, 15:00,  3 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    xuliangw pts/0    192.168.56.2     09:30     ?     0.35s  0.18s sshd: xu
    bgx_xuli pts/1    192.168.56.2     01:33    9:24   0.03s  0.00s bash
    root     pts/2    192.168.56.2     07:13    0.00s  1.49s  0.08s w

    4.使用userdel删除账户

    语法 : userdel [-r] username //-r 同时删除家目录
    
    [root@xuliangwei ~]# userdel user1
    [root@xuliangwei ~]# ll /home/user1/ -d
    drwx------. 3 501 501 4096 2017-11-15 12:40 /home/user1/
    
    //连同家目录一起删除
    [root@xuliangwei ~]# userdel -r user1

    用户密码管理:

    创建完账户后,默认是没有设置密码的,所以该账户是没有办法登陆操作系统。只有使用passwd设置好密码后方可登录系统。
    使用passwd为用户创建密码时,为了安全起见,请尽量设置复杂一些。可以按照如下规则设置密码:

    1.密码的长度最好大于10位字符
    2.密码中包含大小写字母数字以及特殊字符 ! @ # $
    3.不规则性(不要出现自己名字、公司名字、自己电话、等等简单的密码)

    需要注意:

    1.普通用户只能更改自己的密码(密码必须满足8位字符)
    2.管理员用户能更改任何人的密码(密码长度无限制)

    1.使用passwd命令修改用户密码

    语法: passwd [username]
    
    //'passwd'后面不加[username]则是修改当前登陆终端用户的密码。
    //如果你登陆的是root管理员用户,后面可以指定要修改的用户。
    //只有root管理员才可以修该其他用户的密码,普通账户只能修改自己的密码,并且普通用户没有修改其他用户密码的权限
    
    
    //root管理员用户登陆,修改root用户密码
    [root@localhost ~]# passwd  
    更改用户 root 的密码。
    新的 密码:
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    
    //root用户登陆,修改其他用户的密码
    [root@localhost ~]# passwd xuliangwei
    更改用户 xuliangwei 的密码
    新的 密码:
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。
    
    
    //普通用户修改root管理员密码
    [bgx_xuliangwei@xuliangwei ~]$ passwd root
    passwd: Only root can specify a user name.
    
    
    //无需用户交互修改密码, 将前者的输出结果, 成为后者的输入
    [root@xuliangwei ~]# echo "123" | passwd --stdin xuliangwei
    Changing password for user xuliangwei.
    passwd: all authentication tokens updated successfully.

    2.随机复杂密码生成的方式

    mkpasswd密码生成工具, -l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
    [root@xuliangwei ~]# yum install -y expect   //需要安装扩展包
    [root@xuliangwei ~]# mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4
    |K&13bR)i/

    组的基本管理

    组账户信息保存在/etc/group/etc/gshadow两个文件中。

    /etc/group 组账户信息

    [root@node1 ~]# head -2 /etc/group
    root:x:0:
    bin:x:1:bin,daemon
    
    // /etc/group由':' 分割, 分割为4个字段,每个字段的具体含义如下:
    字段名称
    1.组的名称
    2.组的密码(存在/etc/gshadow)
    3.组GID信息
    4.仅显示附加成员,基本成员不显示

    /etc/gshadow 组密码信息

    [root@node1 ~]# head -2 /etc/gshadow
    root:::
    bin:::bin,daemon
    
    // /etc/gshadow由 ':' 分割, 分割为4个字段,每个字段的具体含义如下:
    字段名称
    1.组名称
    2.组密码
    3.组管理员
    4.仅显示附加成员,基本成员不显示

    1.使用groupadd命令新增组groupadd [-g GID] groupname

    //创建基本组, 不指定gid
    [root@node1 ~]# groupadd no_gid
    [root@node1 ~]# tail -n1 /etc/group
    no_gid:x:1000:
    
    //创建基本组, 指定gid为5555
    [root@node1 ~]# groupadd -g 5555 yes_gid
    [root@node1 ~]# tail -n1 /etc/group
    yes_gid:x:5555:
    
    //创建系统组,gid从201-999
    [root@xuliangwei ~]# groupadd -r sys_group
    [root@xuliangwei ~]# tail -n1 /etc/group
    sys_group:x:990:

    2.使用groupdel删除组

    该命令没有特殊选项,如果一个用户有基本组和附加组,只能删除附加组,不能删除基本组

    #删除组
    [root@xuliangwei ~]# groupdel active_group
    
    #删除用户附加组
    [root@docker ~]# id xuliangwei
    uid=1069(xuliangwei) gid=5005(xuliangwei) groups=5005(xuliangwei),5004(devops)
    [root@docker ~]# groupdel devops
    [root@docker ~]# id xuliangwei
    uid=1069(xuliangwei) gid=5005(xuliangwei) groups=5005(xuliangwei)
    
    #无法删除用户基本组
    [root@xuliangwei ~]# tail -n1 /etc/group
    network_sa:x:5008:
    [root@xuliangwei ~]# groupdel network_sa
    groupdel: cannot remove the primary group of user 'bgx_xuliangwei'
    #只有删除用户或者用户变更基本后,方可删除该组

    3.使用gpasswd设置组密码

    [root@xuliangwei ~]# groupadd devops
    [root@xuliangwei ~]# gpasswd devops
    Changing the password for group devops
    New Password:
    Re-enter new password:

    用户身份切换:

    Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。

    1.Shell分类

    交互式shell    //等待用户输入执行的命令(终端操作,需要不断提示)
    非交互式shell   //执行shell脚本, 脚本执行结束后shell自动退出
    
    登陆shell     //需要输入用户名和密码才能进入shell su - xuliangwei
    非登陆shell    //不需要输入用户和密码就能进入,比如执行sh, bash, su username
    
    //查看登陆shell
    [root@xuliangwei ~]# pstree
    
    //临时设置,永久设置需要写配置文件
    [root@xuliangwei ~]# export PS1='[h@u 	]#'
    [xuliangwei@root 02:06:28]#

    2.bash shell配置文件

    Bash的配置文件保存用户的工作环境
    
    个人配置文件: ~/.bash_profile ~/.bashrc
    全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
    
    profile类文件, 设定环境变量, 登陆前运行的脚本和命令
    bashrc 类文件, 设定本地变量, 定义命令别名
    
    全局配置和个人配置设置冲突, 优先使用个人配置准

    3.shell配置文件应用顺序

    //登录式shell配置文件执行顺序
    /etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
    
    //非登陆式shell配置文件执行顺序
    ~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
    
    
    #验证登陆shell和非登陆shell配置文件执行顺序, 在每个配置文件加入一段 “echo”即可。
    #最后通过登陆shell和非登录shell方式登陆linux, 即可验证执行顺序。

    4.如果全局配置和个人配置出现冲突, 那么如何验证呢?

    编辑全局配置 /etc/profile     新增一行: PS1='[h@u 	]#'
    [xuliangwei@root 02:16:57]#     //当前终端shell环境
    
    编辑个人配置 ~/.bash_profile     新增一行: PS1='[u@H]#'
    
    
    [xuliangwei@root 02:18:27]#su  bgx_xuliangwei
    [bgx_xuliangwei@xuliangwei root]$
    
    [xuliangwei@root 02:18:34]# su - bgx_xuliangwei
    [bgx_xuliangwei@xuliangwei.com]#

    5.创建用户,并登录系统

    [root@node1 ~]# useradd xuliangwei
    [root@node1 ~]# echo "123"|passwd --stdin xuliangwei
    
    //使用xuliangwei用户登录当前Linux系统
    ➜  ~ ssh xuliangwei@192.168.56.111
    xuliangwei@192.168.56.111's password:
    [xuliangwei@node1 ~]$
    
    //可以使用whoami查看当前登录用户
    [xuliangwei@node1 ~]$ whoami
    xuliangwei

    6.切换用户,使用命令su [-] username

    su命令后面跟-代表进入登陆式shell 如果su命令后不加-代表进入非登陆式shell,他们之间的区别在于加载的环境变量不一样。

    普通用户su -代表直接切换至root用户身份, 但需要输入root用户密码。
    超级管理员root用户使用su - username切换普通用户不需要输入任何密码。 

    [xuliangwei@node1 ~]$ pwd
    /home/xuliangwei
    
    //不加 '-' 切换到root账户下时,当前目录没有变化
    [xuliangwei@node1 ~]$ su
    密码:
    [root@node1 xuliangwei]# pwd
    /home/xuliangwei
    [root@node1 xuliangwei]# exit
    exit
    
    //加 '-'切换到root账户,当前目录为root账户的家目录。
    [xuliangwei@node1 ~]$ su -
    密码:
    [root@node1 ~]# pwd
    /root

    7.以某个用户的身份执行某个服务,使用命令su -c username

    [root@xuliangwei ~]# su - xuliangwei -c 'ifconfig'
    [root@xuliangwei ~]# su - xuliangwei -c 'ls ~'

    用户身份提权

    su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全。
    为了改进这个问题,从而产生了sudo这个命令。
    sudo执行一个仅有root身份才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。
    默认只有root用户能使用sudo命令,普通用户想要使用sudo需要root预先设定,即使用 visudo命令去编辑相关的配置文件/etc/sudoers

    Centos7提权

    [root@node1 ~]# usermod bgx -G wheel
    //日志审计
    [root@node1 ~]$ sudo tail -f /var/log/secure

    CentOS6提权

    #1.系统安装后就有sudo命令,如果没有sudo命令,可通过如下方式安装
    [root@xuliangwei ~]# yum install -y sudo
    
    #2.使用`visudo`命令编辑sudo配置文件, 相当于 vim /etc/sudoers`配置文件
    [root@xuliangwei ~]# visudo  #会对配置进行验证
    xuliangwei ALL=(ALL) /bin/rm, /bin/cp  #新增
    
    #3.配置选项详解
    1.用户名      2.主机名   3.角色名       4.命令名
    root            ALL=    (ALL)           ALL
    xuliangwei      ALL     使用最高角色执行    /bin/rm, /bin/cp #允许使用sudo执行命令
    xuliangwei   ALL=(ALL)  NOPASSWD:/bin/cp, /bin/rm   //不需要密码使用rm、cp命令
    
    #4.使用visudo -c检查配置文件
    [root@xuliangwei ~]# visudo  -c
    /etc/sudoers: parsed OK

    sudo的使用方法:

    命令: vim  /etc/sudoers  == visudo

    步骤:

    1.添加用户并设置密码
    [root@Test01 ~]# useradd stu01
    [root@Test01 ~]# echo 123456 |passwd --stdin stu01
    
    2.使用root用户执行visudo命令并进行配置
    [root@Test01 ~]# visudo
    #在92行左右按照如下格式添加授予权限
    90 ## Allow root to run any commands anywhere
    91 root    ALL=(ALL)       ALL
    92 stu01   ALL=(ALL)       ALL
    
    3.切换到stu01用户
    [root@Test01 ~]# su stu01
    
    4.使用sudo ls可使用root的ls权限
    [stu01@Test01 root]$ ls /root/
    ls: cannot open directory /root/: Permission denied
    [stu01@Test01 root]$ sudo ls /root/
    anaconda-ks.cfg  a.txt    b.txt  c.txt  install.log  install.log.syslog
    
    5.使用sudo -l可查看添加的权限
    [stu01@Test01 root]$ sudo -l
    User stu01 may run the following commands on this host:
        (ALL) ALL

    sudo的不同使用方法:

    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    stu01 ALL=(ALL) /bin/ls,/bin/cat     #只允许stu01以root权限使用ls和cat命令 
    stu01 ALL=(ALL) /bin/ls /root         #只允许stu01以root权限查看/root目录 其他目录无权限
    stu01 ALL=(ALL) /bin/ls -l /root     #只允许stu01以root权限使用ls命令的-l参数
    stu01 ALL=(ALL) /bin/*                 #只允许stu01以root权限使用/bin下面的所有命令
    stu01 ALL=(ALL) /bin/*,!/bin/ls     #只允许stu01以root权限使用/bin下面除了ls的所有命令
    stu01 ALL=(ALL) NOPASSWD:ALL        #授予stu01用户所有权限并且不需要输入密码

    sudo中间的ALL=(ALL)含义

    第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。
    第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。
    例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:
    foobar linux=(jimmy,rene) /bin/kill

    当然配置文件/etc/sudoers包含了诸多配置项,可以使用命令man sudoers来获得帮助信息。

    下面介绍一个很实用的案例,我们的需求是将Linux服务器设置成如下:
    1.仅允许使用普通账户登陆Linux服务器,禁止root直接登录
    2.可以让普通用户不输入密码就能sudo su -切换到root账户

    //禁止root用户登陆
    [root@xuliangwei ~]# sed -i  's@#PermitRootLogin yes@PermitRootLogin no@g' /etc/ssh/sshd_config
    [root@xuliangwei ~]# systemctl restart sshd
    
    //配置sudo权限
    [root@xuliangwei ~]# visudo
    User_Alias USER_SU = bgx1,bgx2,xuliangwei
    Cmnd_Alias SU = /bin/su
    USER_SU ALL=(ALL) NOPASSWD:SU
    
    //使用root登陆服务器失败
    ➜  ~ ssh root@192.168.56.11
    root@192.168.56.11's password:
    Permission denied, please try again.
    
    //使用普通用户登陆服务器
    ➜  ~ ssh xuliangwei@192.168.56.11
    xuliangwei@192.168.56.11's password:
    Last login: Mon Oct 30 09:28:21 2017 from 192.168.56.2
    
    //使用sudo提权至root用户
    [xuliangwei@xuliangwei ~]$ sudo su -
    [root@xuliangwei ~]#

    用户行为审计方法

    通过sudosyslog配合实现对所有用户进行权限的日志审计并将记录日志集中管理,实施后让所有运维和开发执行的sudo命令都有记录可查,杜绝了内部人员的操作安全隐患。
    sudo日志审计,专门针对sudo命令的系统用户记录其执行的命令相关信息,所谓sudo命令日志审计,并不记录普通用户的操作,而是记录执行sudo命令的用户操作。

    1. 齐治 堡垒机
    2. gateone web跳板机
    3. python开发的开源跳板机产品 
    Jumserver跳板(Jumpserver.org中可以查看demo)
    4. shell跳板机

    1.安装sudo、rysylog

    [root@node1 ~]# yum install -y sudo rsyslog
    
    //检测是否安装成功
    [root@node1 ~]# rpm -qa sudo rsyslog  
    rsyslog-5.8.10-10.el6_6.x86_64
    sudo-1.8.6p3-19.el6.x86_64

    2.配置/etc/sudoers记录日志路径

    [root@node1 ~]# yum install -y sudo rsyslog
    
    //检测是否安装成功
    [root@node1 ~]# rpm -qa sudo rsyslog  
    rsyslog-5.8.10-10.el6_6.x86_64
    sudo-1.8.6p3-19.el6.x86_64

    3.配置rsyslog日志服务

    [root@node1 ~]# echo "local2.debug /var/log/sudo.log" >>/etc/rsyslog.conf 
    
    //重启rsyslog服务
    [root@node1 ~]# /etc/init.d/rsyslog restart   
    Shutting down system logger:                               [  OK  ]
    Starting system logger:                                    [  OK  ]

    4.普通用户使用sudo权限验证日志记录

    //使用普通执行sudo命令
    [xuliangwei@node1 ~]$ rm -rf /root/test/
    rm: 无法删除"/root/test": 权限不够
    [xuliangwei@node1 ~]$ sudo rm -rf /root/test/
    
    //检查用户在什么时间执行过什么操作
    [xuliangwei@node1 ~]$ cat /var/log/sudo.log
    Nov  7 07:56:58 : xuliangwei : TTY=pts/1 ; PWD=/home/xuliangwei ; USER=root ;
        COMMAND=/bin/rm -rf /root/test/
  • 相关阅读:
    mysql批量导入删除
    sql查重去除id最小值
    Rest构建分布式 SpringCloud微服务架构项目
    Django模板语言及视图
    Django模板语言
    面向对象进阶
    初识面向对象
    os模块和sys模块
    random模
    时间模块
  • 原文地址:https://www.cnblogs.com/tim1blog/p/9724348.html
Copyright © 2011-2022 走看看