zoukankan      html  css  js  c++  java
  • 02-用户管理

    一、什么是用户

    # 指能够正常登陆操作系统.

    二、为什么要有用户

    # 2.1) 进程需要依赖一个特定用户的身份,才可以正常的运行.
    # 2.2) 服务器可能会有多个用户, root的权限太大.

    三、用户分类

    """
        类型        名称    ID编号
        超级管理员   root    0
        系统用户             1~999            <--为系统正常运转而使用的用户   [ 系统用户  | 虚拟用户 ]
        普通用户             1000+          <--能够正常登陆系统的用户   [ 普通用户 ]
    """
    #  **** 进程能够以什么样的方式去访问一个文件或目录,  取决于进程运行的 "用户身份" 对该文件或目录是否拥有对应的权限

    1、查用户

    [root@oldboy-pythonedu ~]# id root
    uid=0(root) gid=0(root) 组=0(root)

    2、创建用户

    [root@oldboy-pythonedu ~]# useradd oldboy
    [root@oldboy-pythonedu ~]# id oldboy
    uid=1001(oldboy) gid=1001(oldboy) 组=1001(oldboy)

    3、创建的用户信息存在哪?

    root:x:0:0:root:/root:/bin/bash
    oldboy:x:1001:1001::/home/oldboy:/bin/bash
    
    """
    第一列: 用户名称
    第二列: 密码占位符,密码存储在  /etc/shadow 文件中
    第三列: 用户的UID
    第四列: 用户的GID
    第五列: 描述信息  commit 
    第六列: 用户的家目录
    第七列: 用户登录的Bash类型
    """

    4、用户存储密码的文件

    /etc/shadow
    root:$6$QyNI5YH5XihOfDKY:18533:0:99999:7:::

    5、创建用户参数

    """
    -u: 指定用户的UID
    -g: 指定用户的基本组 ( 不指定,默认创建与用户同名的组 )
    -G: 指定附加组  ( 干爹 )
    -c: 指定注释信息
    -s: 指定登录的bash类型,默认是 /bin/bash
    -r: 指定系统用户
    -M: 不创建用户的家目录
    """

    例:

    5.1、创建用户

    # 创建kkkedu用户,UID5001,基本组works,附加组sa 注释信息:2019 work,登陆shell:/bin/bash
    [root@oldboy-pythonedu ~]# groupadd students
    [root@oldboy-pythonedu ~]# groupadd sa
    [root@oldboy-pythonedu ~]# useradd kkkedu -u 5001 -g works -G sa -c "2019 new work" -s /bin/bash

    5.2、创建系统用户

    创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
    [root@oldboy-pythonedu ~]# useradd mysql -r  -M -s /sbin/nologin 

    5.3、删除用户

    userdel -r username   删除用户,并删除用户的家目录
        不建议加-r: 因为很多情况下开发使用的用户家目录下有很多软件和配置文件

    6、为用户设定密码

    密码使用工具: lastpass

    设定密码的方式: 仅root可以设定所有人的密码, 普通仅能设定自己的密码,并且密码的强度有要求.
    交互式:
    passwd [username]

    6.1、非交互式

    [root@oldboy-pythonedu ~]# echo "12" | passwd --stdin root #固定密码 
    [root@oldboy-pythonedu ~]# echo $RANDOM | md5sum | cut -c 2-10 | tee 1.txt |passwd --stdin root #随机密码

    批量创建用户及随机密码

    [root@oldboy-pythonedu ~]# cat useradd.sh 
            #!/usr/bin/bash
            #1.如何批量创建用户
            for user_name in old-{1..100}
            do
                pass=$(echo $RANDOM | md5sum  | cut -c 2-10)
                
                # 判断用户是否存在,如果存在则不创建
                id $user_name &>/dev/null
                if [ $? -eq 0 ];then
                    continue
                else
                    # 创建用户
                    useradd $user_name 
                    # 设定密码
                    echo "$pass" | passwd --stdin $user_name &>/dev/null        # 设定密码,将结尾打到空
                    echo "Username: $user_name  Password: $pass ok.."            # 将用户名和密码输出到面板
                    echo "Username: $user_name  Password: $pass ok.." >> user_password.txt        #将用户名和密码输出到文件中
                fi
            done

    6.2、交互式

    [root@oldboy-pythonedu ~]# cat useradd_2.sh 
    #!/usr/bin/bash
    
    
    read -p "请输入你要创建的用户名称: " User
    read -p "请输入你要创建的用户数量: " Number
    
    
    #1.如何批量创建用户
    for i in $(seq $Number)
    do
        user_name=$User-$i
        pass=$(echo $RANDOM | md5sum  | cut -c 2-10)
        
        # 判断用户是否存在,如果存在则不创建
        id $user_name &>/dev/null
        if [ $? -eq 0 ];then
            continue
        else
            # 创建用户
            useradd $user_name 
            # 设定密码
            echo "$pass" | passwd --stdin $user_name &>/dev/null
            echo "Username: $user_name  Password: $pass ok.."
            echo "Username: $user_name  Password: $pass ok.." >> user_password.txt
        fi 
    done

    7、用户组

    7.1、组的分类

    """
    所属组: 当创建一个用户时,如果不指定主组,会默认创建一个同名的组.
    附加组: 创建用户时可以指定我想加入的附加组, 此时用户就可以具备附加的组的权限.
    """

    7.2、创建组

    """
    -g: 指定gid,默认不指定,则从1000+开始
    
    [root@oldboy-pythonedu ~]# groupadd -g 5001 devops
    """

    7.3、删除组

    """
    [root@oldboy-pythonedu ~]# groupdel devops
    
    
    [root@oldboy-pythonedu ~]# groupdel students
    groupdel:不能移除用户“oldboyedu”的主组
    [root@oldboy-pythonedu ~]# userdel -r oldboyedu 
    [root@oldboy-pythonedu ~]# groupdel students
    
    """

    四、用户提权

    1、su切换身份

    """
    需要知道用户的密码,才可以切换.
        su - root         #输入root的密码
                
    问题:
        1.不希望给开发root的权限,容易造成故障.
        2.不给开发权限,有些任务又需要root权限.
    """

    2、sudo提权

    """
    1.快速给用户分配一个sudo的权限:
        [root@oldboy-pythonedu ~]# useradd -G wheel kkk
        [root@oldboy-pythonedu ~]# echo "123" | passwd --stdin kkk
    
    2.验证权限:
        [kkk@oldboy-pythonedu ~]$ yum install wget -y
        已加载插件:fastestmirror
        您需要 root 权限执行此命令。
    
    
    [kkk@oldboy-pythonedu ~]$ sudo yum install wget -y
    我们信任您已经从系统管理员那里了解了日常注意事项。
    总结起来无外乎这三点:
    
        #1) 尊重别人的隐私。
        #2) 输入前要先考虑(后果和风险)。
        #3) 权力越大,责任越大。
    
    [sudo] kkk 的密码:            # 普通自己的密码,不是root的密码
    """

    3、通过/etc/sudoers文件为用户分配权限

    vim /etc/sudoers
    visudo -c 检查语法

    """
    1.定义组名称  ( sudo里面的虚拟的 )
        
    User_Alias DEV = kaifa1,kaifa2
    User_Alias OPS = ops1,ops2
    
    
    2.定义权限
    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
    
    ## Services
     Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
    
    ## Updating the locate database
    # Cmnd_Alias LOCATE = /usr/bin/updatedb
    
    ## Storage
    Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
    
    
    ## Processes
    Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
    
    
    2.将用户组与权限进行绑定   
    root    ALL=(ALL)       NOPASSWD:ALL                #可以执行所有的命令,并且无需输入密码
    DEV     ALL=(ALL)       NETWORKING,SOFTWARE,SERVICES
    OPS     ALL=(ALL)       NETWORKING,SOFTWARE,SERVICES,PROCESSES,STORAGE
    """

    创建对应的用户,并设定密码

    [root@kxq-pythonedu ~]# useradd kaifa1
    [root@kxq-pythonedu ~]# useradd kaifa2
    [root@kxq-pythonedu ~]# useradd ops1
    [root@kxq-pythonedu ~]# useradd ops2
    [root@kxq-pythonedu ~]# echo "1" | passwd --stdin kaifa1
    [root@kxq-pythonedu ~]# echo "1" | passwd --stdin kaifa2
    [root@kxq-pythonedu ~]# echo "1" | passwd --stdin ops1
    [root@kxq-pythonedu ~]# echo "1" | passwd --stdin ops2

    使用 sudo -l 验证开发的权限和运维的权限是否不一致

    """
    用户 kaifa1 可以在 kxq-pythonedu 上运行以下命令:
        (ALL) /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
            /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/rpm,
            /usr/bin/up2date, /usr/bin/yum, /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start,
            /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart,
            /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
    
    
    
    用户 ops1 可以在 kxq-pythonedu 上运行以下命令:
        (ALL) /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
            /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/rpm,
            /usr/bin/up2date, /usr/bin/yum, /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start,
            /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart,
            /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable,
            /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /sbin/fdisk, /sbin/sfdisk,
            /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
    """
  • 相关阅读:
    前端总结(二)跨域
    前端总结(一)闭包
    html2canvas截图白边显示问题
    阻止回车刷新页面的方法
    mac下搭建redis环境
    Mac上的Apache 开启,停止,重启
    mac系统下安装、启动、停止mongodb
    Python实战之制作瘟疫传播实验
    Pyhton表白代码——浪漫圣诞节
    Python网络爬虫——BeautifulSoup4库的使用
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13798872.html
Copyright © 2011-2022 走看看