• Linux基础08 组的基本管理, 组的增删改, shell的分类, 环境变量的加载顺序, 登录显示动画, 切换用户su , 用户提权sudo, sudo企业案例


    1.组的基本管理

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

    创建组,修改组,删除组,组创建密码,切换组身份

        #添加组
        groupadd
        -g:指定GID    # groupadd zls_e -g 60000 #创建zls_e, gid为60000
        
        #修改组
        groupmod
        -g:修改GID    # groupmod zls_e -g 5237
        
        #删除组
        groupdel
        注意:如果组内有其他成员,则无法删除
        
        #组创建密码(了解即可)
        gpasswd
        [root@oldboyedu ~]# gpasswd zls_a
        Changing the password for group zls_a
        New Password: 1
        Re-enter new password: 1
    
        #切换组的身份(了解即可,没什么用)
        newgrp    (切换用户的组身份后,创建的文件通过ll查看,用户组权限会变为切换的组)

    2.shell的分类

    1.登录式shell
    2.非登录式shell
    3.交互式shell
    4.非交互式shell

    3.环境变量加载顺序

        1)登录式shell
        /etc/profile        age=10
        /etc/profile.d/*.sh        age=11
        ~/.bash_profile         age=12
        ~/.bashrc            age=13
        /etc/bashrc        age=14
        
        2)非登录式shell    (像输入bash命令)
        .bashrc
        /etc/bashrc
        /etc/profile.d/*.sh    (所有的sh都加载一遍)

    如果有需求,所有用户都需要加载的环境变量,和登录式shell 非登录式shell都支持,把环境变量放在:

        /etc/bashrc
        /etc/profile.d/*.sh

    总结:
    1.登录式shell,会加载5个地方的环境变量
    2.非登录式shell,会加载3个地方的环境变量
    2.如果环境变量中配置冲突,最后一个加载的会把之前的冲突的配置覆盖

    4. 登录显示动画

    vim /etc/motd    开机动画,登录界面(可以用来提示文件在哪里)
                                      _oo0oo_
                                     088888880
                                     88" . "88
                                     (| -_- |)
                                      0\ = /0
                                   ___/'---'\___
                                 .' \\\\|     |// '.
                                / \\\\|||  :  |||// \\
                               /_ ||||| -:- |||||- \\
                              |   | \\\\\\  -  /// |   |
                              | \_|  ''\---/''  |_/ |
                              \  .-\__  '-'  __/-.  /
                            ___'. .'  /--.--\  '. .'___
                         ."" '<  '.___\_<|>_/___.' >'  "".
                        | | : '-  \'.;'\ _ /';.'/ - ' : | |
                        \  \ '_.   \_ __\ /__ _/   .-' /  /
                    ====='-.____'.___ \_____/___.-'____.-'=====
                                      '=---='
     
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            佛祖保佑    iii    永不死机

    5.切换用户(登录式shell)

        su -    (加上-登录式shell,不加-非登陆式shell且不会进家目录,最好加上所有环境变量加载一遍)
        [root@localhost ~]# su - ldc
       -c: 不切换用户的情况下,使用其他用户执行命令
       [ldc@localhost ~]$ su -root -c 'rm -fr /root/.bashrc'  # 会要求输入root密码,用root执行该命令

       

    6.用户提权(一般企业禁止root用户登录, 其他用户需要提权然后才能sudo)

    1)sudo (-l:查看sudo的权限 # sudo -l 查看当前用户权限)
    下方方法为centos7提权方法:

    usermod oldboy1 -G wheel # 添加附加组, 该组有sudu权限(oldboy1需要重连,就可使用sudo)

    2) visudo 查看编辑用户权限

        ## Allow root to run any commands anywhere
        用户    主机  身份        命令
        root    ALL=(ALL)       ALL
        zls_a   ALL=(ALL)       ALL(该用户可以使用所有命令,非root要用sudo)
        ldc      ALL=(ALL)       /bin/vim(该用户只能执行vim命令,非root要用sudo)
        ## Allows people in group wheel to run all commands    允许在这个组里的人执行所有命令
        %wheel  ALL=(ALL)       ALL

    visudo修改的文件是/etc/sudoers, 如果有vim权限即可修改用户权限(最好使用visudo命令, 有检查语法错误, 防止同事修改问题)

    visudo的一些配置

    原来:
    ## These are groups of related commands...
    
    ## 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
    
    ## Installation and management of software    (安装相关组)
    # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
    下方进行修改: ## Allow root to run any commands anywhere root ALL=(ALL) ALL oldboy1 ALL=(ALL) NOPASSWD: ALL(NOPASSWD: ALL就不用输入密码,否则sudo输完密码过几分钟还要输密码) oldboy1 ALL=STORAGE,SOFTWARE (该用户只能运行STORAGE和SOFTWARE组里的命令)

    3)sudo配置免密码

    #1.普通用户执行sudo不需要输入密码配置
    [root@zls ~]# visudo
    zls ALL=(ALL) /bin/rm, /bin/cp  #默认
    zls   ALL=(ALL)  NOPASSWD:/bin/rm, /bin/cp  #修改后,使用rm和cp不用输密码
            
    #2.默认普通用户无权删除
    [zls@zls ~]$ rm -f /root/002
    rm: cannot remove `/root/002': Permission denied
            
    #3.验证sudo免密码执行权限
    [zls@zls ~]$ sudo rm -f /root/002

    4)sudo配置组

            //如果每增加一个用户需配置一行sudo,这样设置非常麻烦。所以可以进行如下设置
        
            %zls  ALL=(ALL)     NOPASSWD:/bin/rm, /bin/cp  #新增组
            //group1这个组的所有用户都拥有sudo的权力。接下来只需要将用户加入该组即可。
            
            //创建用户加入该组
            [root@zls ~]# groupadd zls
            [root@zls ~]# useradd zls1 -g zls
            [root@zls ~]# useradd zls2 -g zls
            
            //root用户建立目录
            [root@zls ~]# mkdir /root/zls_sudo
            
            //切换用户并删除测试
            [root@zls ~]# su - zls1
            [zls1@zls ~]$ rm -rf /root/zls_sudo
            rm: cannot remove `/root/zls_sudo': Permission denied
            
            //使用sudo
            [zls1@zls ~]$ sudo rm -rf /root/zls_sudo

    7.sudo企业案例

        1)优化ssh禁止root用户登录(提权,不要给vim,vi,visudo,su,echo,cat)
        [root@oldboyedu ~]# vim /etc/ssh/sshd_config
        修改禁止root用户登录
        原来:
        #PermitRootLogin yes
        修改成:
        PermitRootLogin no
        
        修改ssh的端口
        原来:
        #Port 22
        修改成:
        Port 52013
    
        2)重启ssh服务    (无法ssh登录root,可以su切换root。其他用户可用sudo,但要先提权)
        [root@oldboyedu ~]# systemctl restart sshd
    
        3)关闭防火墙
        [root@oldboyedu ~]# systemctl stop firewalld
    
        4)visudo    (sudo配置文件)
        User_Alias USER_SU = zls1,zls2,zls    # 用户别名, 用于多用户的设置(非同一群组用户)
        Cmnd_Alias SU = /bin/su        # 命令别名, 可用于多命令设置
        USER_SU ALL=(ALL) NOPASSWD:SU    #  编辑多用户权限
  • 相关阅读:
    HQL查询.
    Apache solr(二).
    Apache solr(一).
    Node.js入门以及第一个helloworld程序.
    SQL优化一(SQL使用技巧)
    NodeJS安装第一个工程.
    [LeetCode] 545. Boundary of Binary Tree 二叉树的边界
    [LeetCode] 41. First Missing Positive 首个缺失的正数
    [LeetCode] 749. Contain Virus 包含病毒
    [LeetCode] 803. Bricks Falling When Hit 打击砖块掉落
  • 原文地址:https://www.cnblogs.com/ludingchao/p/15772353.html
Copyright © 2020-2023  润新知