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

    用户管理

    Q:为什么要有用户?

    A:1. linux是一个多用户系统

       2. 权限管理(权限最小化)

    用户存在的目的是为了对系统中的资源做出归属,

    密码存在的目的是为了对于用户做身份确认

    用户组中包含有一个或者多个用户,方便对于多个用户做授权操作。

    用户管理的相关文件

    /etc/passwd:用户基本信息

    /etc/shadow:用户密码信息、过期时间等

    /etc/group:用户组信息

    /etc/gshadow:用户组密码

    /etc/default/useradd:创建用户的默认配置信息

    /etc/skel/:用户家目录模板

    /etc/login.defs:全局用户设定信息

    1./etc/passwd:每行是一个用户,用来记录用户的基本信息,

    基本格式:account:password:UID:GID:GECOS:directory:shell

    其中:

    accout:用户名

    password:用户密码,密码位置默认是x

    UID:用户身份id,用来唯一的标识一个用户

    GID:用户组id,用来在系统中唯一的标识一个用户组(这里指的是其基本组的组ID)

    GECOS:用户描述信息,可以空白,也可以随意写(useradd -c )

    directory:用户家目录

    shell:用户所使用的shell类型

    shell类型有两种:

     /bin/bash-->可以登录系统

     /sbin/nologin-->该用户一定无法登录系统)

    2./etc/group:用户组信息

    linux中,用户一定是属于一个组的

    linux中,创建用户的时候,会自动创建一个组,组名和组id都和所创建的用户相同。而且,该用户会自动加入到这个组中。

    基本格式:groupname:password:GID: [user1, user2.....]

    groupname:组名

    password:组密码

    GID:组id

    [user1, user2.....]:该组中的用户列表

    用户的基本组(主组):当前用户具有哪个组的权限

    用户的附加组:用户额外属于的组

    3./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中的用户类别:

    管理员用户:UID为0的用户;

    系统用户:用来运行一个程序,而不是登录系统。 ID:1-999

    普通用户:登录系统,但是没有管理员权限。 ID:1000-60000

    系统用户有以下特点:

    1. 因为不需要登录,所以shell类型通常为/sbin/nologin

    2. 系统用户没有家目录

    3. 系统用户id通常是小于1000

    命令:

    1.useradd:添加用户

    常见选项:

    -g, --gid GROUP:指的用户的基本组的组id

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指的用户的附加组列表

    -u,--uid UID:指的用户的uid

    -r, --system:创建一个系统用户

    (由于默认配置文件的shell类型是/bin/bash ,所以创建时,如果不修改shell类型,系统用户也可以登录系统,创建时应使用命令:useradd -r -s /sbin/nologlin)

    -s, --shell SHELL:在创建用户的时候,指定用户的shell类型

    /bin/bash/,/sbin/nologin)

    2.passwd:(如果不指定用户名,那么就是修改当前用户的密码)

    常见选项:

    --stdin:

    echo “密码“ | passwd --stdin 用户名

    3.userdel:删除用户

    常见选项:

    -r:在删除用户的时候,连同用户数据一并删除

    4.groupadd: 创建用户组

    常见选项:

    -g:添加组ID

    5.groupdel:删除用户组

    6.usermod:修改用户信息   

    常用选项:

    -g, --gid GROUP: 更新使用者新的起始登入群组。群组名须已存在 。

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 定义使用者为一堆 groups 的成员。每个群组使用,区格开来

    -u, --uid UID: 使用者ID 值 。必须为唯一的ID值 

    -s, --shell SHELL: 指定新登入shell。如此栏留白,系统将选用系统预设shell 。

    -L, --lock: 锁定用户的密码

    -U : 解锁用户的密码

    7.id :用来查看指定的用户的信息(或判断用户是否存在)

    常用选项:

    -u:仅仅显示用户uid

    -g:仅仅显示用户gid

    -G:仅仅显示用户全部组id

    8.su :切换用户

    格式:su - 目标用户

    注意:

    su命令和su -命令最大的本质区别就是:

    前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。

    要从当前用户切换到其它用户,应该使用su -命令

    9.tail:查看用户组信息

     tail -1 /etc/group

     tail -2 /etc/group

    关于shadow文件:

      zxhk:  $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 :  7  :   :   :   

    第一段:用户名:  

    第二段:加密后的密码      

    第三段:上次修改密码举例元年经过的天数1970年1月1日(如果该字段空,意味着该用户密码被禁用)

    第四段:密码最短使用时间(0表示不限制)

    第五段:密码最长有效期(99999表示不限制)(如果第5的值小于第四段,那么用户无法修改自己的密码)

    第六段:密码到期前几天开始发送告警,提示密码即将过去,请立即修改

    第七段:非活动期间,密码到期后的宽限时间(登录系统的时候必须先修改密码,才能登录)

    第八段:密码过期时间(也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)

    第九段:保留字段

    Q:密码忘记或者被更动了?怎么办?

     A:这个时候就必须要使用到 /etc/shadow 这个资料了!我们刚刚知道密码是存在这个档案中的, 所以只要你能够以各种可行的方法开机进入 Linux ,例如单人维护模式,或者是以 live CD (KNOPPIX) 来进入 Linux 系统。之后,将硬碟顺利挂载,然后进入 /etc/shadow 这个档案中,将 root 的密码这一栏全部清空!然后再登入 Linux 一次,这个时候 root 将不需要密码 (有的时候需要输入空白字元) 就可以登入了!这个时候请赶快以 passwd 设定 root 密码即可。

    关于用su -命令切换用户时,报错 bash -4.2$:

    有两种解释:

    1.该用户是系统用户,没有家目录

    2.该用户的家目录下的系统文件可能不存在

    解决方法:首先在 /home创建一个该用户的家目录,然后从/etc/skel下复制.bash_logout   .bash_profile   .bashrc 文件到该用户的家目录即可

  • 相关阅读:
    QNET弱网测试工具
    echart
    数组按照一大一小打乱排列
    根据环境开启 vconsole
    时间戳在ios上面显示NAN Bug
    去除字符串中html标签
    ios 上 复选框背景黑边bug
    echarts配置项说明
    JS 数据处理技巧及小算法
    js中最常用的几种遍历数据方法
  • 原文地址:https://www.cnblogs.com/leeeel/p/10815711.html
Copyright © 2011-2022 走看看