用户组管理及用户提权

用户组管理及用户提权

用户组管理

组相关文件

  • /etc/group
[root@localhost ~]# cat /etc/group
lx02:x:10010:lx04
# 1.组名字
# 2.组密码占位符
# 3.GID
# 4.显示该组的附加成员
  • /etc/gshadow
[root@localhost ~]# cat /etc/gshadow
lx02:!::lx04
lx06:!::lx04
# 1.组名字
# 2.组密码(空和!是没有密码)
# 3.组管理员
# 4.显示该组的附加成员
  • 相关命令
    • 增加组
    • 删除组
    • 修改组
    • 查看组
# 增加组
groupadd   [选项]    组名

# 选项
-g:指定组的gid
-r:指定gid范围201-999之间的系统组

## 举例:
[root@localhost ~]# groupadd lx66
[root@localhost ~]# id lx66
id: lx66: no such user
[root@localhost ~]# tail -1 /etc/passwd
lx15:x:10017:10017::/home/lx15:/bin/bash
[root@localhost ~]# tail -1 /etc/group
lx66:x:10018:

# -g
[root@localhost ~]# groupadd lx67 -g 10020
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:

# -r
[root@localhost ~]# groupadd lx68 -r
[root@localhost ~]# tail -1 /etc/group
lx68:x:994:

# 删除组
groupdel 组名
举例:
[root@localhost ~]# groupdel lx68
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:
# 修改组
groupmod  选项  组名

# 选项
-g:修改组的gid
-n:修改组名字

# 示例:
# -g
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:
[root@localhost ~]# groupmod -g 10021 lx67
[root@localhost ~]# tail -1 /etc/group
lx67:x:10021:

# -n
[root@localhost ~]# tail -1 /etc/group
lx67:x:10021:
[root@localhost ~]# groupmod lx67 -n lx68
[root@localhost ~]# tail -1 /etc/group
lx68:x:10021:
# 查看组信息
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

用户身份切换

  • Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到
    root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。
    如何在普通用户的情况下,完成日常工作?
    1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。
    优点:简单,方便
    缺点:需要知道root密码,不安全,切换到root没有日志审计功能
    2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
    优点:安全,方便
    缺点:复杂

su命令

# 切换用户命令:
su 
# 用法:
su - [用户名]
不加用户名:
su - :表示切换到root用户

su命令前 解析:

  • shell的种类

    • 交互式shell

    • 非交互式shell

    • 登录shell

      需要输入用户名和密码,才可以登录

    • 非登陆shell

      不需要输入用户名和密码,就可以登录

  • 系统的环境变量文件

    # 局部环境变量
    ~/.bashrc
    ~/.bash_profile
    
    # 全局环境变量
    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc
    
    # 加载顺序
    /etc/profile
    /etc/profile.d/*.sh
    ~/.bash_profile
    ~/.bashrc
    /etc/bashrc
    
    ## 正常修改profile全局环境变量文件通过/etc/profile.d/创建以*.sh结尾的的文件来修改全局环境变量,而不在/etc/profile直接修改避免误操作而导致系统问题。
    # 举例:(修改命令提示符)
    1)创建 mltsf.sh的文件
    [Thu Apr 07 - zls root@localhost ~]$ vim /etc/profile.d/mltsf.sh
    
    [root@localhost ~]# ll /etc/profile.d/
    total 64
    -rw-r--r--. 1 root root  121 Jul 31  2015 less.sh
    -rw-r--r--. 1 root root   81 Oct 31  2018 sh.local
    -rw-r--r--. 1 root root  105 Dec 16  2020 vim.csh
    
    [root@localhost ~]# vim /etc/profile.d/mltsf.sh
    [root@localhost~]# vim /etc/profile.d/mltsf.sh
    
      1 export PS1='[\[\e[35;1m\]\u\[\e[31;1m\]@\[\e[34;1m\]\h\[\e[33;1m\]\w]\[\e[36;1m\]# \[\e[0m\]' 
    [root@localhost ~]# logout 
    
    #虚拟机重连即可:
    [root@localhost~]# ll /etc/profile.d/
    total 68
    -rw-r--r--. 1 root root  121 Jul 31  2015 less.sh
    -rw-r--r--  1 root root   94 Apr 10 15:36 mltsf.sh
    -rw-r--r--. 1 root root   81 Oct 31  2018 sh.local
    -rw-r--r--. 1 root root  105 Dec 16  2020 vim.csh
    

用户身份提权

sudo命令提权

  • 什么是sudo
    sudo就是普通用户可以提权,执行root用户可以执行的命令
  • 为什么要用到sudo
    如果在公司中,入职后,领导给运维的用户时普通用户,但是有些命令只能root执行

sudo如何使用

# 1.系统的超级管理员(root)需要做sudo的配置(发一个授权给指定的普通用户)
# 2.普通用户只需要在,执行的命令之前,加上sudo即可

sudo的配置(root发放授权的过程)

# 没有sudo命令,则需要安装
[root@localhost ~]# yum install -y sudo

# sudo的配置文件:/etc/sudoers
[root@localhost ~]# vim /etc/sudoers
# 用户名       所有主机=(所有角色)        所有命令的执行权限
root            ALL=(ALL)                    ALL


                                      # 普通用户也不需要输入自己的密码了
lx15            ALL=(ALL)                NOPASSWD:ALL
                                       #(只给CP命令授权)
lx15            ALL=(ALL)                    /bin/cp   


# 推荐修改sudo的方式
[root@localhost ~]$ visudo
-c:检查sudoers文件的语法

## 免密切换到root用户,就算不免密,也是输入zls用户的密码,切换到root用户
[lx15@localhost ~]$ sudo su -


# sudo 只认系统命令 不认识别名
## 报错 示例:
[root@localhost ~]# sudo ll
sudo: ll: command not found
原因:ll是别名,不是系统命令,sudo不走别名,只认识系统命令


# 普通用户以root身份执行命令
1)普通用户无法进入root用户文件下:
[lx15@localhost~]# mkdir /root/test_sudo
mkdir: cannot create directory ‘/root/test_sudo’: Permission denied
2)root用户下授权 vidudo
  99 ## Allow root to run any commands anywhere
    100 root    ALL=(ALL)   ALL
    101 lx68    ALL=(ALL)   ALL
3) 切换lx15用户
[root@localhost~]# su - lx15
    
4)利用sudo创建命令:
[lx15@localhost~]# sudo mkdir /root/test_sudo

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 lx15: 
[lx15@localhost~]# sudo ls -al /root
total 588
drwxr-xr-x   2 root root      6 Apr 10 16:36 test_sudo



# sudoers其他别名配置
## Host_Alias     FILESERVERS = fs1, fs2
   Host_Alias FILESERVERS = localhost, web01

## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
  Cmnd_Alias JCLXCMD = /bin/cp,/bin/mv
  Cmnd_Alias JCLXUNCMD =!/bin/rm,!/bin/su   ## !表示命令不可用


Cmnd_Alias:命令别名
Host_Alias:主机别名
User_Alias:角色别名


# 给组发兵符
## Allows people in group wheel to run all commands
    108 %wheel  ALL=(ALL)         ALL

        %lx66   ALL=(ALL)    NOPASSWD:ALL

所以总结:
# usermod 用户名 -G 提权组

# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组,即可

注意:除非企业中有要求,哪些命令需要用,哪些不能使用

思维导图

posted @ 2022-04-10 18:07  悠悠哉55  阅读(70)  评论(0)    收藏  举报