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 文件到该用户的家目录即可

  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/leeeel/p/10815711.html
Copyright © 2011-2022 走看看