用户及用户组管理

用户管理

为什么需要有用户?

  1. linux是一个多用户系统,可以登录很多用户,不互通的操作。
  2. 权限管理(权限最小化),不同用户不同权限。
    用户:存在的目录是为了对系统中的资源做归属
    密码:存在的目的是为了对用户做身份认证
    用户和用户组
    用户组,在用户组中可以包含一个或者多个用户方便对多个用户进行授权操作

用户管理相关文件

/etc/passwd:用户基本信息,
/etc/shadow:用户密码信息、过期时间等
/etc/group:用户组信息
/etc/gshadow:用户组密码
/etc/default/useradd:创建用户的默认配置信息
/etc/skel/:用户家目录模板
/etc/login.defs:全局用户设定信息us
/etc/passwd: 每行是一个用户,用来记录用户的基本信息,每行的格式
account:password:UID:GID:GECOS:directory:shell,shell用户类型,/sbin/nologin --> 不可登陆系统;/bin/bash --> 可登陆系统
accout:用户名
password:用户密码,密码位置默认是x

用户信息

UID:用户身份id,用来唯一的标识一个用户
GID:用户组id,用来在系统中唯一的标识一个用户组(这里指的是其基本组的组ID)
GECOS:用户描述信息,可以空白,也可以随意写(useradd -c )
directory:用户家目录
shell:用户所使用的shell类型
/bin/bash–>可以登录系统
/sbin/nologin–>该用户一定无法登录系统

比如
root   :   x   :    0    :       0       :   newuser  :  /root  :  /bin/bash
用户名    密 码    用户id   用户所在组的id  描述信息    家目录    shell类型
/etc/group
用户组信息
linux,用户一定是属于一个组的
在linux中,创建用户的时候,
会自动创建一个组,组名和组id都和所创建的用户相同
而且,该用户会自动加入到这个组中
c❌1007:
组成:groupname:password:GID: [user1, user2…..]pa
groupname:组名
password:组密码
GID:组id
[user1, user2…..]:改组中的用户列表

概念

用户的基本组(主组):当前用户具有哪个组的权限;一个用户只能属于一个基本组=主组,可以属于多个附加组
用户的附加组:用户额外属于的组
主组:gp02
附加组:gp01、gp03
/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表示创建

用户类别
可以登录系统的用户
管理员用户:uid为0的用户
普通用户:就是可以登录系统,但是没有管理员权限的用户
不能登录系统的用户:
系统用户:用来运行一个程序,而不是用来登录系统
各类用户的id
管理员用户:0
系统用户:1-999
普通用户:1000-60000(自定义uid最大4294967294)
系统用户的特点
1. 因为不需要登录,所以shell类型通常为/sbin/nologin,避免bin/bash造成系统可登录的漏洞。
2. 系统用户没有家目录
3. 系统用户id通常是小于1000

Useradd命令

useradd [options] username
options:
-d, –home HOME_DIR:指定用户家目录
-c, –comment COMMENT:用户说明信息
-e, –expiredate EXPIRE_DATE:指的账号的过期时间,时间格式 YY/MM/DD
-g, –gid GROUP:指的用户的基本组的组id;*
-G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:指的用户的附加组列表*
-u,–uid UID:指的用户的uid;*
-m, –create-home:创建用户的时候自动创建用户家目录(默认就已经使用)
-M:不自动创建用户家目录
-o, –non-unique:通常和-u一起使用,用来让两个用户使用相同的uid
-r, –system:创建一个系统用户*
-s, –shell SHELL:在创建用户的时候,指定用户的shell类型*
(/bin/bash/,/sbin/nologin)
创建系统用户:[root@ken ~]# useradd -r -s /sbin/nologin test
查看创建的用户信息:[root@ken ~]# tail -1 /etc/passwd
系统用户可以登陆系统,但是通常情况下我们不让他登陆系统,在创建的时候添加选项-s指定shell类型为/sbin/nologin
1root切换至普通用户无需输入密码,但是普通用户切换至root或者其他用户都需要输入密码。

useradd -s /sbin/nologin -M -r ken

passwd命令
passwd [[options] username]
(如果不指定用户名,那么就是修改当前用户的密码)
options:
--stdin
-l:锁定用户
-u:解锁用户
-d:删除用户密码
-e:让用户密码过期
echo “ 123“ | passwd --stdin ken
表示给ken用户设置密码123 (ken用户必须存在)
设置密码的原则
1. 长度要够
2. 密码复杂度(数字+字母+特殊符号)
3.密码定期更新。工作中
密码修改:echo “000123” | passwd --stdin “text2”

Userdel命令

删除用户 userdel
userdel [options] username
options:
-r:在删除用户的时候,连同用户数据一并删除
删掉属主以后;nouser nogroup -->无属主,无属组文件
删掉var/..和home里的同名文件。
skel文件的三个重要文件缺失的报错如何解决。

创建用户组 groupadd

groupadd [options] groupname
options:
-g GID:
-o:

删除用户组 groupdel

groupdel groupname

Shadow文件详解

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

常常听到:我的密码忘记或者被更动了?怎么办?
  有的时候会发生这样的情况,就是说,你的 root 密码忘记了!要怎么办?重新安装吗?另外, 有的时候是被入侵了, root 的密码被更动过,该如何是好?
  这个时候就必须要使用到 /etc/shadow 这个资料了!我们刚刚知道密码是存在这个档案中的, 所以只要你能够以各种可行的方法开机进入 Linux ,例如单人维护模式,或者是以 live CD (KNOPPIX) 来进入 Linux 系统。之后,将硬碟顺利挂载,然后进入 /etc/shadow 这个档案中,将 root 的密码这一栏全部清空!然后再登入 Linux 一次,这个时候 root 将不需要密码 (有的时候需要输入空白字元) 就可以登入了!这个时候请赶快以 passwd 设定 root 密码即可。

Usermod命令

usermod [options] username
options
-g, –gid GROUP: 更新使用者新的起始登入群组 。群组名须已存在 。
-G, –groups GROUP1[,GROUP2,…[,GROUPN]]]: 定义使用者为一堆 groups 的成员 。 每个群组使用 ,区格开来
-u, –uid UID: 用 者 ID 值 。必须为唯一 的ID值
-s, –shell SHELL: 指定新登入shell 。 如此栏留白 , 系统将选用系统预 设 shell 。
-L, –lock: 锁定用户的密码
-U : 解锁用户的密码
-l, –login NEW_LOGIN :变更使用者 login时的名称为 login_name 。
-e, –expiredate EXPIRE_DATE:加上使用者帐号停止日期 。日期格式 为 MM/DD/YY.
-d, –home HOME_DIR:更新使用者新的登入目录 。
-m, –move-home:移动用户家目录至新的位置

id命令

作用:用来查看指定的用户的信息(或判断用户是否存在)
格式:id [-u|-g|-G] username
选项
-u:仅仅显示用户uid
-g:仅仅显示用户gid
-G:仅仅显示用户全部组id

su命令(switch user)

作用:进行切换用户
格式:su – 目标用户;才能切换到所到用户的家目录。
su命令和su -命令最大的本质区别就是:
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令

posted @ 2019-07-03 15:04  BeiteJohn  阅读(255)  评论(0编辑  收藏  举报