用户与组

一、用户与组的概念

1Linux多用户,多任务的特性
   Linux是多用户多任务操作系统,多用户多任务就是可在系统上建多个用户,多个用户可同一时间同一个系统互不影执行的响各自不同的任务。例如linux服务器上有rootwwwftp,四个用户。同一时间内,root用户在查看系统日志,管理维护系统,www用户在修改自己的网页程序,ftp用户在上传文件,每个用户互不干扰的进行着自己的工作,各用户间不能越权访问,如www用户不能执行ftp用户的相关操作,ftp用户也不能修改www用户的网页程序。不同用户具有不同的权限, linux通过这种权限的划分与管理,实现了多用户多任务的运行机制。

2linux下用户分类
 1)超级用户:拥有对系统的最高管理权限,默认是root
 2)普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限。

3)虚拟用户:也叫用户,这类用户最大的特点是不能登录系统,例如binadmnobody用户等。

3、用户和组的概念
  用户组是具有相同特征用户的逻辑集合,需要让多个用户具有相同的权限时,如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,若有10个用户,就需要授权10次,此方法不显然太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限,这就是用户组。

4、用户和组的关系:
   用户和用户组的对应关系如图所示:

     1.png

 

(1)一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
(2)一对多:即一个用户可以存在多个用户组中。
(3)多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
(4)多对多:多个用户可以存在多个组中。

5UIDGID

    计算机只能识别二进制的01,故算机不能对用户名与用户组名称进行直接的区分,而是通过系统中每个用户与用户组的单独的数字ID进行标识。

标识用户的ID号为UID(UserID) 
标识用户组的ID号为GIDGroupID

CentOS系统默认使用16位二进制数字来标识UIDGID0-65536(默认使用前60000) 
CentOS67中不同ID范围:

用户类型

CentOS 6UID

CentOS 7UID

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号的取值范围是0655350是超级用户root的标识号,199由系统保留,作为管理账号。在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文件
用来定义创建一个用户时的默认设置,比如指定用户的UIDGID的范围,用户的过期时间、是否创建用户主目录等等。简单介绍如下:
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
指定最小UID500 ,也就是说添加用户时,用户的UID 500开始
UID_MAX                60000
指定最大UID60000
GID_MIN                  500
指定最小GID500,也就是添加组时,组的GID500开始。
GID_MAX                60000
指定最大GID60000
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

用户名,空密码,UIDGID,注释信息,家目录,登陆shell

/etc/shadow

用户名,加密密码,各密码时间设置

/etc/group

组名,空组密码,GID,组中用户

/etc/gshadow

组名,加密密码,组管理员列表,组中用户

 

      可执行vipw直接打开/etc/passwd文件,vigr直接打开/etc/group文件

      可执行pwckgrpck分别检查/etc/passwd文件和/etc/group文件。

▲/etc/shadow中密码设置如下图

2.png             chfn:交互式修改用户的注释信息

            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:锁定用户

    -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

(0)
hanlln1hanlln1
上一篇 2016-10-24
下一篇 2016-10-25

相关推荐

  • 马哥linux运维第一天感受

    101个人的大家庭

    Linux干货 2018-03-26
  • 马哥教育网络20期+第二周练习博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。 3、请使用命令行展开功能来完成以下练习:    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d   …

    Linux干货 2016-06-20
  • 优云automation实践技巧:简单4步完成自动化构建发布

    前言:本文介绍了优云是如何将运维自动化产品应用到日常工作实践中,并通过内部用户的大量使用来不断改进产品的用户体验。 各位看官,这不是一个揭发单身有为青年因同事们天天秀恩爱而受到一万点暴击伤害的故事。这里指的狗粮,不是真正的“狗粮”——当然,也不是你们认为的狗粮。 事实上,现在很多涉足产品开发的互联网公司,都会提到“吃狗粮”这一概念(出自“Eating you…

    系统运维 2017-01-09
  • 第一周作业-01

    计算机组成    硬件:主要由5大部件组成,CPU包含运算器和控制器两大部件        CPU:运算器、控制器、寄存器、缓存        存储器:内存,RAM(Random Access Memory)    , Memory只支持平…

    Linux干货 2016-09-10
  • 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0、虚拟化、云计算、大数据、微架构、DevOps再到今天的容器Docker与Mesos。 Docker的出现方便了应用的测试、部署、与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行。Docker的轻量级、快…

    Linux干货 2016-07-10
  • LAMP—Apache编译安装

    一、前言:   httpd-2.2与 httpd-2.4版本相比增加了许多新特性:    1、MPM支持运行时装载    2、支持event    3、支持异步读写    4、支持每模块每目录使用不同的日志级别    5、每请求配置<IF&gt…

    Linux干货 2015-06-15