用户与组管理

2023-10-18 11:36:47 浏览数 (1)

权限管理-用户组管理

一、linux用户与组管理

  1. 什么是用户?
    • 用户是操作系统提供一种安全机制
    • 用户是权限的化身
  2. 为何要有用户? 1.划分权限,增强安全性 2.每启动一个进程都会与一个用户关联 进程-》用户-》权限(作用在文件身上)
  3. 查看用户相关信息 [root@localhost ~]# id   #查看当前用户 [root@localhost ~]# whoami   #查看当前用户是谁 [root@localhost ~]# id egon   #查看egon用户 [root@localhost ~]# who       #查看当前登录的所有用户 [root@localhost ~]# ps aux |grep [s]sh   #每一个进程都有其用户
  4. linux系统中用户角色划分
    • linux系统中用户分为管理员和其他用户
      • 管理员有最高权限
      • 其他用户根据管理员的分配拥有不同权限
    • UID与GID
      • UID用户ID,唯一表示一个系统用户的账号,UID在系统中是唯一的,相当于一个人身份证,用户名就相当于这个人的名字 ,
      • GID组ID,如果把一个操作系统看成一家公司,UID相当于这个人的员工号,GID就是他的部门编号。
      • 用户分类(约定,规范)

      centos7规定:    0         超级管理员,最高权限,有极强的破坏能力    1-200     系统用户,由系统分配给系统进程使用    201-999   系统用户,用来运行安装的程序,所以此类用户无需登录系统(动态分配)    1000     普通常规用户,正常可以登录系统的用户,权限比较小,能执行任务有限

    • 组的概念: 主组:用户本身所在部门 附加组:为用户添加的部门
    • 用户和组的关系 一对一:一个用户可以属于一个组,用户默认就在自己的主组下 ​ 一对多:一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组 ​ 多对多:多个用户可以属于多个组
  5. 超级用户
    • 默认root用户,UID和GID均为0。可以操作系统中任何文件和命令,拥有最高管理权限。
  6. 总结:
    • linux系统把文件的权限分为了三类
      • 1、属主对应的权限
      • 2、属组对应的权限
      • 3、其他对应的权限
    • 一个用户对文件的权限扫描的优先级:
      • 1、先看该用户是否是文件的属主
      • 2、在1失败的情况,再看该用户是否是文件的属组
      • 3、在2失败的情况,该用户属于其他人权限

    -rw-r--r--. 1 root egon 1149 10月 28 11:51 /etc/passwd

  7. PS: linux/Unix是一个多用户、多任务的操作系统 windows 是一个单用户多任务操作系统

二、用户与组相关文件

和用户、组相关的文件:

  • /etc/passwd #保存用户信息的文件
  • /etc/shadow #用户密码
  • /etc/group #组文件
  • /etc/gshadow #组密码 详解如下:
  1. /etc/passwd:用户信息文件

[root@zls ~]# 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

  1. /etc/shadow:用户密码文件

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

  1. etc/group:组文件 [root@zls ~]# head -2 /etc/group root:x:0: bin:x:1:bin,daemon ​ // /etc/group由':' 分割, 分割为4个字段,每个字段的具体含义如下: 字段名称 1.组的名称 2.组的密码(存在/etc/gshadow) 3.组GID信息 4.仅显示附加成员,基本成员不显示
  2. /etc/gshadow: [root@zls ~]# head -2 /etc/gshadow root::: bin:::bin,daemon ​ // /etc/gshadow由 ':' 分割, 分割为4个字段,每个字段的具体含义如下: 字段名称 1.组名称 2.组密码 3.组管理员 4.仅显示附加成员,基本成员不显示
  3. /home/xxx #用户家目录
  4. /etc/skel/ #用户老家的模板 [panghu@duorou ~]$ ll -a /etc/skel 总用量 24 drwxr-xr-x.   3 root root   78 10月  6 10:14 . drwxr-xr-x. 146 root root 8192 10月 28 20:31 .. -rw-r--r--.   1 root root   18 4月   1 2020 .bash_logout -rw-r--r--.   1 root root  193 4月   1 2020 .bash_profile -rw-r--r--.   1 root root  231 4月   1 2020 .bashrc drwxr-xr-x.   4 root root   39 10月  6 10:14 .mozilla
  5. /var/spool/mail/xxx #用户邮箱文件 [panghu@duorou ~]$ ll /var/spool/mail 总用量 0 -rw-rw----. 1 chirou mail 0 10月 27 19:45 chirou -rw-------. 1 root   mail 0 10月 20 21:02 root -rw-rw----. 1 rpc    mail 0 10月  6 10:14 rpc -rw-rw----. 1 test   mail 0 9月  26 10:46 test

三、手动创建用户

  1. 准备用户信息 /etc/passwd [root@web01 ~]# vim /etc/passwd   #新加一行[root@web01 ~]# tail -1 /etc/passwdlikui:x:1004:1004::/home/likui:/bin/bash/etc/shadow /etc/shadow [root@web01 ~]# tail -1 /etc/shadow  likui:6ilevDH.FeYR2qYz9yWAIWBGKwNVJN3T4QjPZ5jEgOoRxXJ8WUCXlUR.xhlMDpMTE2j3oY/QGZTZA10.Z7q1lDL9vrofAG0:18563:0:99999:7:::[root@web01 ~]# openssl passwd -1 -salt 'i have a dream'           #制作密码Password:      #输入密码1i have aUE.0R7CD7Y8Bdh/.F1SFH.   #生成的密码​ps:openssl passwd 手动生成密码    语法格式 openssl passwd [option] passwd    选项如下:   -1:表示采用MD5加密算法        -salt:指定salt值,不不使用随机产生的salt。在使用加密算法进行加密时,及时密码一样,salt不一样,所计算出来的bash值也不一样,除非密码一样,salt值也一样,计算出来的hash值才一样。salt为8字节的字符串。
  2. 准备组信息 /etc/group [root@web01 ~]# tail -1 /etc/group  likui:x:1004:[root@web01 ~]# tail -1 /etc/gshadow  likui:6Q1ywq/DXFEnMDIhP
  3. 准备家目录
    • /home/xxx/(创建用户家目录,并且用户老家的模板/etc/skel/ 装修一下,注意权限) [root@web01 ~]# mkdir /home/likui/ [root@web01 ~]# [root@web01 ~]# chown likui.lilui /home/likui/ [root@web01 ~]# chmod 700 /home/likui/ [root@web01 ~]# [root@web01 ~]# cp -ra /etc/skel/.[!.]* /home/likui/   #装饰用户 [root@web01 ~]# chown likui.likui /home/likui/.[!.]*     #修改权限
  4. 准备邮箱
    • /var/spool/mail/xxx 用户邮箱文件

    [root@web01 ~]# touch /var/spool/mail/likui [root@web01 ~]# chown likui.mail /var/spool/mail/likui [root@web01 ~]# chmod 660 /var/spool/mail/likui

  5. 激活账号的登录 [root@aliyun ~]# ssh ;ligui@127.0.0.1 egon@127.0.0.1's password: Last login: Mon Aug 10 23:18:55 2020 from 127.0.0.1 Welcome to Alibaba Cloud Elastic Compute Service ! [egon@aliyun ~]$ whoami ligui

四、用户管理命令

用户管理命令汇总

  • useradd #添加用户
  • userdel #删除用户
  • usermod #修改用户信息

详解如下:

  1. 创建用户 [root@localhost ~]# useradd biubiu
  2. 查看用户 [root@localhost ~]# id biubiu uid=1011(biubiu) gid=1011(biubiu) 组=1011(biubiu) [root@localhost ~]# who [root@localhost ~]# whoami PS:当创建一个用户时。如果没有指定用户的主组,将会创建一个同名的组作为用户的主组。
  3. 删除用户 [root@localhost ~]# userdel user01 #删除用户user01,但不删除用户家目录和mail [root@localhost ~]# userdel -r user01 #要想删彻底,加-r选项 ​
  4. useradd 命令详解:创界用户的同时指定选项 '-u' 指定用户的UID,不能和现有ID冲突 '-g' 指定用户用户所属的主组 '-G' 指定用户附加组,用逗号隔开添加多个附加组 '-d' 指定用户家目录 '-c' 指定用户注释信息 '-M' 不建立家目录 '-s' 指定用户默认shell '-r' 创建系统账户, 没有家目录 ​ //创建zls用户,指定UID5001,基本组students 附加组sa,dba 注释信息:one newB user, 登陆的shell:/bin/bash [root@zls ~]# groupadd sa [root@zls ~]# groupadd dba [root@zls ~]# groupadd students [root@zls ~]# useradd -u 5001 -g students -G sa,dba -c "one newB user" -d /home/zls -s /bin/bash zls [root@zls ~]# tail -1 /etc/passwd zls:x:5001:505:one newB user:/home/zls:/bin/bash ​ //创建系统用户,不建立用户家目录 指定nologin使其用户无法登陆系统 [root@zls ~]# useradd mysql -M -s /sbin/nologin [root@zls ~]# useradd -r dba -s /sbin/nologin
  5. usermod命令详解 '-u'    修改用户的UID '-g'    修改用户所属的基本组GID '-G'    修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组 '-a'    追加更多的附加组, 必须和-G使用: -aG 追加附加组 '-m'    家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置 '-d'    指定用户的家目录新位置   '-c'    修改用户的注释信息 '-s'    更改用户使用的shell '-l'    更改用户登录名 '-L'    锁定用户 '-U'    解锁用户 ​ ​ [root@zls ~]# grep "zls" /etc/passwd zls:x:5001:505:2018 new student:/home/zls:/bin/bash ​ //修改用户uid,gid, 附加组, 注释信息, 用户家目录, 登录shell, 登录名 ​ //建立组,指定组gid [root@zls ~]# groupadd -g 5008 network_sa [root@zls ~]# groupadd -g 5009 devops ​ //修改用户属性 [root@zls ~]# usermod -u 6001 -g5008 -a -G 5009 -c "2019 new student" -md /zls -s /bin/sh -l zls_zls zls ​ //检查是否修改成功 [root@zls ~]# grep "zls" /etc/passwd zls_zls:x:6001:5008:2019 new student:/zls:/bin/sh ​ [root@zls ~]# id zls_zls uid=6001(zls_zls) gid=5008(network_sa) groups=5008(network_sa),503(sa),504(dba),5009(devops) ​ //验证家目录 [root@zls ~]# ll -d /zls drwx------. 2 zls_zls network_sa 4096 2014-09-23 00:13 /zls ​ ​ 锁定用户 [root@zls ~]# echo "123" |passwd --stdin zls_zls [root@zls ~]# usermod -L zls_zls //无法正常登录系统 ➜  ~ ssh zls_zls@192.168.56.11 zls_zls@192.168.56.11's password: Permission denied, please try again. ​ 解锁用户 [root@zls ~]# usermod -U zls_zls //正常登录系统 ➜  ~ ssh zls_zls@192.168.56.11 zls_zls@192.168.56.11's password: Welcome to Aliyun Esc Linux -sh-4.1$

五、组管理命令

组管理命令汇总

  • groupadd # 创建组
  • groupmod #修改组
  • groupdel #删除组
  • gpasswd #设置组密码
  • newgrp #切换主组

详解如下:

  1. 创建组 //创建基本组, 不指定gid [root@zls ~]# groupadd no_gid [root@zls ~]# tail -n1 /etc/group no_gid:x:1000: ​ //创建基本组, 指定gid为5555 [root@zls ~]# groupadd -g 5555 yes_gid [root@zls ~]# tail -n1 /etc/group yes_gid:x:5555: ​ //创建系统组,gid从201-999 [root@zls ~]# groupadd -r sys_group [root@zls ~]# tail -n1 /etc/group sys_group:x:990:
  2. 2.使用groupmod命令修改组 //-g 修改组gid [root@zls ~]# groupmod -g 1111 no_gid [root@zls ~]# tail -1 /etc/group no_gid:x:1111: ​ //-n 修改组名称 [root@zls ~]# groupmod -n active_group yes_gid [root@zls ~]# tail -1 /etc/group active_group:x:5555:
  3. 使用groupdel删除组 #删除组 [root@zls ~]# groupdel egon ​ #删除用户附加组 [root@docker ~]# id zls uid=1069(zls) gid=5005(zls) groups=5005(zls),5004(devops) [root@docker ~]# groupdel devops [root@docker ~]# id zls uid=1069(zls) gid=5005(zls) groups=5005(zls) ​ #无法删除用户基本组 [root@zls ~]# tail -n1 /etc/group network_sa:x:5008: [root@zls ~]# groupdel network_sa groupdel: cannot remove the primary group of user 'zls_zls' #只有删除用户或者用户变更基本后,方可删除该组 ​ PS: 如果一个组是一个用户的主组,那么该组不能被删除,删掉用户会默认一起删掉他的主组。 一个用户必须有一个主组 groupdel 删掉的组不能是任何用户的主组
  4. 使用gpasswd设置密码(了解) [root@zls ~]# groupadd devops [root@zls ~]# gpasswd devops Changing the password for group devops New Password: Re-enter new password:
  5. 切换用户 //切换普通用户 [root@docker ~]# su - zls

0 人点赞