一、用户与组的概念
1、Linux多用户,多任务的特性
Linux是多用户多任务操作系统,多用户多任务就是可在系统上建多个用户,多个用户可同一时间同一个系统互不影执行的响各自不同的任务。例如linux服务器上有root、www、ftp,四个用户。同一时间内,root用户在查看系统日志,管理维护系统,www用户在修改自己的网页程序,ftp用户在上传文件,每个用户互不干扰的进行着自己的工作,各用户间不能越权访问,如www用户不能执行ftp用户的相关操作,ftp用户也不能修改www用户的网页程序。不同用户具有不同的权限, linux通过这种权限的划分与管理,实现了多用户多任务的运行机制。
2、linux下用户分类
(1)超级用户:拥有对系统的最高管理权限,默认是root。
(2)普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限。
(3)虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,例如bin、adm、nobody用户等。
3、用户和组的概念
用户组是具有相同特征用户的逻辑集合,需要让多个用户具有相同的权限时,如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,若有10个用户,就需要授权10次,此方法不显然太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限,这就是用户组。
4、用户和组的关系:
用户和用户组的对应关系如图所示:
(1)一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
(2)一对多:即一个用户可以存在多个用户组中。
(3)多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
(4)多对多:多个用户可以存在多个组中。
5、UID、GID
计算机只能识别二进制的0和1,故算机不能对用户名与用户组名称进行直接的区分,而是通过系统中每个用户与用户组的单独的数字ID进行标识。
标识用户的ID号为UID(UserID)
标识用户组的ID号为GID(GroupID)
CentOS系统默认使用16位二进制数字来标识UID和GID=0-65536(默认使用前60000)
CentOS6和7中不同ID范围:
用户类型 |
CentOS 6中UID |
CentOS 7中UID |
CentOS 6 GID |
CentOS 7 GID |
管理员用户 |
0 |
0 |
0 |
0 |
系统用户 |
1-499 |
1-999 |
1-499 |
1-999 |
登录用户 |
500-60000 |
1000-60000 |
500-60000 |
1000-60000 |
二.用户配置文件概述
1.用户和组相关的配置文件
(1)/etc/passwd文件
系统用户配置文件。文件记录了Linux系统中每个用户的基本属性,所有用户可读。每行记录一个用户,每行记录又被冒号分割,其格式和含义如下:
[root@localhost ~]# more /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
每个字段的详细含义:
用户名:是代表用户账号的字符串。
口令:存放着加密后的用户口令加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,用“x”表示。
用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,作为管理账号。在Linux系统中,普通用户UID默认从500开始。
组标识号:就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组。
注释性描述:字段是对用户的描述信息,比如住址、电话、姓名等等。
主目录:用户登录到系统之后默认所处的目录,也叫做用户的主目录、家目录等等。
默认shell:就是用户登录系统后默认的shell类型。
(2)/etc/shadow文件
用户影子文件:linux将用户的密码从/etc/passwd中分离出来,放到了/etc/shadow,该文件只有root用户有读权限,保证了用户密码的安全性。文件内容的格式例如:
[root@localhost ~]# more /etc/shadow root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7::: bin:*:13934:0:99999:7:::
每个字段的详细含义:
用户名:与/etc/passwd文件中的用户名是相同的。
加密口令:存放的是加密后的用户口令字串。
最后一次修改时间:从某个时间起,到用户最近一次修改口令的间隔天数。
最小时间间隔:两次修改密码之间的最小时间间隔。
最大时间间隔:两次修改密码之间的最大时间间隔。
警告时间:从系统开始警告用户到密码正式失效之间的天数。
不活动时间:用户口令作废多少天后,系统会禁用此用户。
失效时间:该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。若该字段为空,帐号永久可用。
保留字段:linux的保留字段,目前为空。
(3)/etc/group文件
用户组配置文件,用户组的所有信息都存放在此文件中。
[root@localhost ~]# more /etc/group root:x:0:root bin:x:1:root,bin,daemon
每个字段的含义:
组名:用户组的名称,由字母或数字构成,组名不能重复。
口令:存放用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,在这里用“x”代替,linux系统默认用户组都没有口令。
组标识号:GID,与/etc/passwd中的组标识号对应。
组内用户列表: 显示该组的所有用户,多个用户之间用逗号分隔。
2./etc/login.defs文件
用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否创建用户主目录等等。简单介绍如下:
MAIL_DIR /var/spool/mail
当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS 99999
#指定密码保持有效的最大天数
PASS_MIN_DAYS 0
表示自从上次密码修改以来多少天后用户才被允许修改口令
PASS_MIN_LEN 5
指定密码的最小长度
PASS_WARN_AGE 7
表示在口令到期前多少天系统开始通知用户口令即将到期
UID_MIN 500
指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
UID_MAX 60000
指定最大UID为60000
GID_MIN 500
指定最小GID为500,也就是添加组时,组的GID从500开始。
GID_MAX 60000
指定最大GID为60000
CREATE_HOME yes
此项是指定是否创建用户主目录,yes为创建,no为不创建。
3./etc/default/useradd文件
useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认的shell是/bin/bash,是由该文件内容决定的。
[root@localhost ~]# more /etc/default/useradd # useradd defaults file
GROUP=100
HOME=/home #将新建用户的主目录放在/home目录下
INACTIVE=-1 #是否启用帐号过期禁用,-1表示不启用
EXPIRE= #帐号过期日期,不设置表示不启用
SHELL=/bin/bash #指定新建用户的默认shell类型
SKEL=/etc/skel #指定用户主目录默认文件的来源,新建用户主目录下的文件都是从该目录下复制而来的
CREATE_MAIL_SPOOL=no
/etc/default/useradd定义新建用户的默认属性,比如用户主目录、shell类型等。更改此文件,可改变创建新用户的默认属性值。
更改此文件有两种方法,一种是通过文本编辑器,另一种是通过useradd命令。这里介绍第二种方法:
Useradd命令加“-D”参数后,就可以修改配置文件/etc/default/useradd,使用的一般格式为:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
每个选项含义如下:
l -g default_group
新建用户的起始组名或者GID,组名必须为已经存在的用户组名称,GID也必须是已经存在的用户组GID。与/etc/default/useradd文件中“GROUP”行对应。
l -b default_home
指定新建用户主目录的上级目录,所有新建用户都会在此目录下创建自己的主目录。与/etc/default/useradd文件中HOME行对应。
l -s default_shell
指定新建用户默认的shell,与/etc/default/useradd文件中“SHELL”行对应。
l -f default_inactive
指定用户帐号过期多长时间后就永久停用,与/etc/default/useradd文件中“INACTIVE”行对应。
l -e default_expire_date
指定用户帐号的过期时间。与/etc/default/useradd文件中“EXPIRE”行对应。
例子:
useradd –D不加任何参数时,显示/etc/default/useradd文件的当前设置
[root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash
SKEL=/etc/skel
如果要修改添加用户时的默认shell为/bin/csh:
[root@localhost ~]# useradd -D -s /bin/csh [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel
4./etc/skel目录
该目录定义了新建用户在主目录下默认的配置文件,更改此目录的内容可以改变新建用户默认主目录的配置文件信息。
三、用户管理
<1>用户文件
文件 |
内容 |
/etc/passwd |
用户名,空密码,UID,GID,注释信息,家目录,登陆shell |
/etc/shadow |
用户名,加密密码,各密码时间设置 |
/etc/group |
组名,空组密码,GID,组中用户 |
/etc/gshadow |
组名,加密密码,组管理员列表,组中用户 |
可执行vipw直接打开/etc/passwd文件,vigr直接打开/etc/group文件
可执行pwck和grpck分别检查/etc/passwd文件和/etc/group文件。
▲/etc/shadow中密码设置如下图
finger USER:查看用户的详细信息
可创建文件touch /etc/nologin使得用户下次无法登陆系统
<2>用户分类(CentOS 7)
UID |
用户 |
功能 |
0 |
超级管理员 |
管理计算机的全部权限 |
1-999 |
系统用户 |
执行某些服务,不用做登陆系统 |
1000-60000 |
普通用户 |
管理计算机的部分权限 |
<3>用户创建
▲语法格式
useradd [options] LOGIN
▲常用选项
1 |
-u USERNAME:指定用户UID |
2 |
-g GROUPNAME:指定用户主组(基本组),也可以是GID |
3 |
-G GROUPNAME..:指定用户的附加组 |
4 |
-c "COMMENT":指明用户的注释信息 |
5 |
-d HOMEDIR:指明用户的家目录 |
6 |
-s SHELL:指定用户的登陆shell |
7 |
-r:添加系统用户 |
8 |
-o: 忽略UID添加用户 |
注:系统用户默认无家目录和邮箱,登陆系统显示无环境变量。如果要让其拥有环境变量,可创建其家目录并复制/etc/skel/下文件到其家目录中。
用户邮箱地址:/etc/spool/mail/USERNAME
[root@centos7/home/rr]#cp /etc/skel/.[^.]* /home/rr/ -rv [root@centos7 ~]# useradd conver -r [root@centos7 ~]# su conver bash-4.2$ su Password: [root@centos7 ~]# cd /home/ [root@centos7 home]# mkdir conver [root@centos7 home]# cd conver/ [root@centos7 conver]# cp /etc/skel/.[^.]* ./ -r [root@centos7 conver]# su conver [conver@centos7 ~]$ su root Password: [root@centos7 conver]# [root@centos7 conver]# usermod conver -s /bin/nologin [root@centos7 conver]# su conver su: failed to execute /bin/nologin: No such file or directory
<4>用户属性修改
▲语法格式
usermod [options] LOGIN
▲常用选项
1 |
-aG GROUPNAME:为用户添加附加组 |
2 |
-md HOMEDIR:移动家目录 |
3 |
-l NEWNAME:指定新名字 |
4 |
-L,–lock:锁定用户 |
5 |
-U,–ulock:解锁用户 |
6 |
-e YYYY-MM-DD USERNAME:指定用户密码过期日期 |
7 |
-f INACTIVE USERNAME: 设定非活动期限 |
[root@centos7 ~]# getent shadow user user:$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7::: [root@centos7 ~]# usermod -L user [root@centos7 ~]# getent shadow user user:!$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::
注:可使用chsh -s SHELLTYPE USERNME指定用户shell类型
*用户配置文件属性修改,用户的默认属性保存在2个文件中
文件 |
内容 |
/etc/login.defs |
用户范围,密码期限设、加密算法等 |
/etc/default/useradd |
用户登陆默认shell、默认家目录等 |
useradd -D:查看/etc/default/useradd信息
useradd -D -s SHELLTYPE:修改默认shell
useradd -D -d HOMEDIR:修改默认家目录
[root@centos7 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos7 ~]# useradd -D -s /bin/bash [root@centos7 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos7 ~]# getent shadow user user:$6$FTA6U0nc$BGoO2MC7ziXOG871bsp.jbbg25lEtcF0BWt8sRNY66n.P9npsvvIOp1L1Vx9poVuWdPJaR.7/0RyvZxmwn8EB0:17015:0:99999:7::: [root@centos7 ~]# authconfig --passalgo=sha256 --update [root@centos7 ~]# passwd user Changing password for user user. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@centos7 ~]# getent shadow user user:$5$3sxrgtHo$fD3Kiyus2N2NOQMijCdV6f6kII1bWbis4evht71ISOA:17015:0:99999:7::: <5>用户删除
语法格式
userdel [options] LOGIN
-r USERNAME:删除用户及其家目录 |
<6>用户查看
▲语法格式
id [OPTION]... [USER]
▲常用选项
1 |
-u USERNAME:显示用户的UID |
2 |
-g USERNAME:显示用户的GID |
3 |
-G USERNAME:显示用户所属组的所有ID |
*也可使用finger命令查看
[root@centos7 ~]# id -u user 1000 [root@centos7 ~]# is -G user bash: is: command not found... [root@centos7 ~]# id -u user 1000 [root@centos7 ~]# id -G user 1000 4325 [root@centos7 ~]# id user uid=1000(user) gid=1000(user) groups=1000(user),4325(admins) [root@centos7 ~]# finger user Login: user Name: user Directory: /home/user Shell: /bin/bash On since Thu Oct 20 14:55 (CST) on :0 from :0 (messages off) On since Fri Oct 19 10:32 (CST) on pts/0 from :0
3、组管理
<1>创建组
▲语法格式
groupadd [options] group
▲常用选项
-g GID GROUPNAME:创建指定组号的组
<2>删除组
▲语法格式
groupdel group
<3>改变组属性
▲语法格式
groupmod [options] GROUP
▲常用选项
1 |
-n NEW_GROUPNAME:修改组名 |
2 |
-g GID GROUPNAME:新的组ID |
3 |
-A USERNAME.. GROUPNAME:设置组的的管理权限列表 |
[root@centos7 zhao]# groupadd team [root@centos7 zhao]# getent group team team:x:4451: [root@centos7 zhao]# groupmod -g 4452 team [root@centos7 zhao]# getent group team team:x:4452: [root@centos7 zhao]# groupmod -n team1 team [root@centos7 zhao]# getent group team1 team1:x:4452:
<4>更改和查看组成员
语法格式
groupmems [options] [-g GROUPNAME]
命令功能:查看组内成员
1 |
-a,–add USERNAME:指定用户加入组 |
2 |
-g,–group groupname:更改为指定GID |
2 |
-d,–delete USERNAME:从组中删除用户 |
3 |
-l,–list:显示组成员列表 |
[root@centos7 ~]# groupmems -a conver -g user [root@centos7 ~]# groupadd -g 4444 content [root@centos7 ~]# getent group content content:x:4444: [root@centos7 ~]# groupmod -n context -g 4445 content [root@centos7 ~]# groupmems -a aa -g context [root@centos7 ~]# groupmems -l -g context aa [root@centos7 ~]# groupmems -d aa -g context [root@centos7 ~]# groupmems -l -g context
语法格式
groups [OPTION]... [USERNAME]..
命令功能:查看成员所属组
[root@centos7 ~]# getent group admins admins:x:4325:natasha,harry,user [root@centos7 ~]# groups user user : user admins
<5>组切换
语法格式
newgrp [GROUPNAME]
命令功能:切换当前用户的属组,只对当前shell有效
[user@centos7 ~]$ newgrp aa Password: [user@centos7 ~]$ touch 1 [user@centos7 ~]$ ll 1 -rw-r--r--. 1 user aa 0 oct 2 21:12 1
<6>组密码管理
● 更改用户密码:
passwd GROOUPNAM
●
gpasswd [OPTION] GROUP
1 |
-a USERNAME:将用户添加至组中 |
2 |
-d USERNAME:将用户从组中删除 |
3 |
-A USER… :设置管理组的用户列表 |
4、用户切换
su USERNAME |
su – USERNAME |
|
切换类型 |
非登陆式切换 |
登陆式切换 |
是否重读配置文件 |
否 |
是 |
是否改变当前目录 |
否 |
是 |
原创文章,作者:hanlln1,如若转载,请注明出处:http://www.178linux.com/54311