zoukankan      html  css  js  c++  java
  • 用户和用户组

    linux是多用户的系统

    用户管理相关文件

    用户基本信息 /etc/passwd   

    1.该文件中一行就是一个用户!

    2.统计当前系统中有多少用户:     

      [root@kuying2 ~]# cat /etc/passwd | wc -l
        128

    3.passwd文件详解
        zero:x:1000:1000:zero:/home/zero:/bin/bash
        root:x:0:0:root:/root:/bin/bash

        root 用户名
        x 用x进行密码占位
        0 UID
        0 GID
        root 描述信息
        /root root用户家目录,其他用户是在/home下
        /bin/bash shell类型 /bin/bash是可以登录系统的;/sbin/nologin是不可以登录系统的。


      用户组信息 /etc/group
        zero:x:1000:zero
        root:x:0:

        root 组名
        x 用x进行密码占位
        0 GID
      最后还有一位表示有哪些用户在此组内
        如下:表示kuying用户在root组内
        root:x:0:kuying

        /etc/default/useradd文件详解

      定义创建用户默认选项的文件
        # useradd defaults file # useradd默认文件
        GROUP=100 #表示可创建普通组
        HOME=/home #用户的家目录建在/home中;用户家目录的默认创建地
        INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用;宽限天数,0及以下数皆为无效数字
        EXPIRE= #帐号终止日期,不设置表示不启用;帐号失效日期(如:20081212)
        SHELL=/bin/bash #所用SHELL的类型;登录后执行的程序
        SKEL=/etc/skel #用户家目录中的环境文件,默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

        CREATE_MAIL_SPOOL=yes #是否创建用户邮件缓冲,yes表示创建

    主组和附加组
        在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户    组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组
        用户的基本组(主组):当前用户具有哪个组的权限
        用户的附加组:用户额外属于的组

    linux中用户分类
        超级管理员 root uid 0
        系统用户 uid 1-999 运行服务
        普通用户 uid 1000+ 工作中用到用户

      注意:uid只是一种规范

    系统用户:
        1.运行服务程序的
        2.一般不让系统用户登录系统
        3.系统用户无家目录

      默认的shell类型为/bin/bash

    面试题:系统用户都是不可以登录系统的吗?

        错误的。在linux当中创建用户的时候默认使用的shell类型为/bin/bash是可登录系统的,
        如果没有指定不可登录系统的shell类型的话。系统用户是可以登录我们的系统的。
        只是说在工作中需要不让系统用户登录系统,我们在创建系统用户的时候指定系统用户的shell
        类型不可登录系统。

    useradd命令
        作用: 创建用户
        使用格式: useradd options... username

      选项:
      -u 指定UID
      -g 指定主组的ID
      -G 指定附加组ID
      -r 创建系统用户
      -s 指定shell类型 /bin/bash /sbin/nologin
      -c 添加描述信息

      例子1:创建普通用户kuying
        [root@kuying2 ~]# useradd kuying

      例子2:创建用户并添加描述信息
        [root@kuying2 ~]# useradd -c "this is for test" kuying1
        [root@kuying2 ~]# tail -1 /etc/passwd
        kuying1:x:1102:1102:this is for test:/home/kuying1:/bin/bash

      例子3:创建用户并指定用户ID为1105
        [root@kuying2 ~]# useradd -u 1105 kuying2
        [root@kuying2 ~]# tail -1 /etc/passwd
        kuying2:x:1105:1105::/home/kuying2:/bin/bash

      例子4:创建用户并指定主组ID为0 #指定组的时候组必须存在!
        [root@kuying2 ~]# useradd -g 0 kuying4
      或者
        [root@kuying2 ~]# useradd -g root kuying4


      例子5:创建用户并指定附加组ID为0 #指定组的时候组必须存在!
        [root@kuying2 ~]# useradd -G 0 kuying6

      例子6:创建系统用户
        [root@kuying2 ~]# useradd -r -s /sbin/nologin kuying7

        1.可以查看用户ID,发现是1000以内
        2.用户家目录不会创建

    passwd命令
        作用:设置用户密码
      选项:
        -l 锁住密码
        -u 解锁密码
        -d 删除用户密码
        -e 使用户密码过期
        --stdin 从标准输入获取密码

      例子1:给用户创建密码
        [root@kuying2 ~]# passwd kuying
        Changing password for user kuying.
        New password:
        BAD PASSWORD: The password is shorter than 8 characters
        Retype new password:
        passwd: all authentication tokuyings updated successfully.

      注意:root登录到普通用户是不需要输入密码的!
        [kuying@kuying2 ~]$ su - root #从普通用户切换到root是需要输入密码的
        Password:
        [kuying@kuying2 ~]$ exit #输出exit退回上一次登录的用户
        logout
        [root@kuying2 ~]#

      例子2:锁住用户密码
        [root@kuying2 ~]# passwd -l kuying
        Locking password for user kuying.
        passwd: Success

        [root@kuying2 ~]# su - kuying1
        Last login: Thu Jul 11 15:58:44 CST 2019 on pts/0
        [kuying1@kuying2 ~]$ su - kuying #普通用户在此登录输入密码之后会提示认证失败!
        Password:
        su: Authentication failure


      例子3:解锁用户密码
        [root@kuying2 ~]# passwd -u kuying
        Unlocking password for user kuying.
        passwd: Success
        [root@kuying2 ~]# su - kuying1
        Last login: Thu Jul 11 15:59:38 CST 2019 on pts/0
        [kuying1@kuying2 ~]$ su - kuying #再次输入密码登录发现可以正常登录
        Password:
        Last login: Thu Jul 11 15:59:34 CST 2019 on pts/0
        Last failed login: Thu Jul 11 15:59:46 CST 2019 on pts/0
        There was 1 failed login attempt since the last successful login.
        [kuying@kuying2 ~]$

      例子4:让用户密码过期
        [root@kuying2 ~]# passwd -e kuying
        Expiring password for user kuying.
        passwd: Success

        [kuying1@kuying2 ~]$ su - kuying
        Password:
        You are required to change your password immediately (root enforced)
        Changing password for kuying.
        (current) UNIX password: #输入当前用户密码
        New password: #输入新的密码,字母+数字组合
        Retype new password:

      例子5:--stdin使用格式
        echo 密码 | passwd --stdin 用户名

        [root@kuying2 ~]# echo "123" | passwd --stdin kuying
        Changing password for user kuying.
        passwd: all authentication tokuyings updated successfully.

    userdel
        作用:删除用户
      选项:
        -r 删除用户时连同用户家目录删掉

      例子1:删除用户及家目录
        [root@kuying2 ~]# userdel -r kuying6
        [root@kuying2 ~]# id kuying6 #无kuying6用户了
        id: kuying6: no such user
        [root@kuying2 ~]# ls /home #用户家目录也无kuying6家目录
        kuying kuying1 kuying2 kuying3 kuying4 kuying5 shelltest

      例子2:
        [root@kuying2 ~]# userdel kuying5   #删除用户时不删除用户家目录
        [root@kuying2 ~]# id kuying5
        id: kuying5: no such user
        [root@kuying2 ~]# ls /home #但是用户家目录依然存在
        kuying kuying1 kuying2 kuying3 kuying4 kuying5 shelltest
        [root@kuying2 ~]# useradd kuying5 #创建同名用户时报如下的错误
        useradd: warning: the home directory already exists.
        Not copying any file from skel directory into it.
        Creating mailbox file: File exists

        [root@kuying2 ~]# id kuying5 #但是用户仍然创建成功了
        uid=1108(kuying5) gid=1108(kuying5) groups=1108(kuying5)

      如果不想看到上面的报错信息需要如下的操作:
        [root@kuying2 ~]# userdel kuying4
        [root@kuying2 ~]# rm -rf /home/kuying4 #删除用户家目录
        [root@kuying2 ~]# rm -rf /var/spool/mail/kuying4 #删除用户邮箱
        [root@kuying2 ~]# useradd kuying4

    groupadd
        作用:创建用户组

      例子1:创建组
        [root@kuying2 ~]# groupadd kuying9
        [root@kuying2 ~]# tail -1 /etc/group
        kuying9:x:1110:
    groupdel
        作用:删除用户组
      例子1:删除组
        [root@kuying2 ~]# groupdel kuying9

    id
      作用:查看用户信息
        -u
        -g
        -G
      例子1:查看用户信息
        [root@kuying2 ~]# id kuying
        uid=1101(kuying) gid=1101(kuying) groups=1101(kuying),0(root)
        [root@kuying2 ~]# id kuying11
        id: kuying11: no such user

    su
      作用:切换用户
        注意:在切换用户的时候需要加上-进行环境变量的整体改变
      例子1:切换用户
        [root@kuying2 ~]# su - kuying

        /etc/shadow:用户密码信息、过期时间等
        zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
        第一段:用户名:
        第二段:加密后的密码
        第三段:上次修改密码举例元年经过的天数1970年1月1日(如果该字段空,意味着该用户密码被禁用)
        第四段:密码最短使用时间(0表示不限制)
        第五段:密码最长有效期(99999表示不限制)(如果第5的值小于第四段,那么用户无法修改自己的密码)
        第六段:密码到期前几天开始发送告警,提示密码即将过去,请立即修改
        第七段:非活动期间,密码到期后的宽限时间(登录系统的时候必须先修改密码,才能登录)
        第八段:密码过期时间(也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)
        第九段:保留字段

    usermod
        作用:修改用户信息
      选项:
        -u 指定UID
        -g 指定主组的ID
        -G 指定附加组ID
        -s 指定shell类型 /bin/bash /sbin/nologin
        -L, –lock: 锁定用户的密码
        -U : 解锁用户的密码
        -l, –login NEW_LOGIN : 变 更 使 用 者 login 时 的 名 称 为 login_name 。
        -e, –expiredate EXPIRE_DATE:加 上 使 用 者 帐 号 停 止 日 期 。 日 期 格 式 为 MM/DD/YY.

    /etc/shadow:用户组密码
    /etc/default/useradd:创建用户的默认配置信息
    /etc/skel/:用户家目录模板
    /etc/login.defs:全局用户设定信息

  • 相关阅读:
    表达式和计算的描述
    表达式和计算的描述
    递归算法浅谈
    编程基本功训练:流程图画法及练习
    【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!
    VS2008下直接安装使用Boost库1.46.1版本号
    android关键组件service服务(一)
    U盘安装咱中国人自己的操作系统UbuntuKylin14.04LST(超具体原创图文教程)
    数据流图的画法
    匈牙利算法
  • 原文地址:https://www.cnblogs.com/biht/p/11181727.html
Copyright © 2011-2022 走看看