用户与组

一、用户与组的概念

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)
上一篇 2016-10-24 23:42
下一篇 2016-10-25 09:46

相关推荐

  • 第八周作业(网络、bash脚本)

    1-3,计算机网络基础博客已总结,简要补充 协议的分层 为了使那些比较复杂的网络协议更加简单化。ISO根据各通信协议的功能将网络体系分成七层。 在这个分层中,下层为上一层提供服务。上下层之间进行交互时所遵循的约定叫做“接口”。同层之间的交互所遵循的约定叫做“协议” 说的更形象一点,两个中国人打电话这个通信。就可以分为两层,同层之间的叫协议,我说汉语,你也说汉…

    Linux干货 2016-12-18
  • Linux发行版本介绍与哲学思想

    1.Linux发行版本介绍 Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。 1.服务器版本:Centos/Debian 从Red Ha…

    Linux干货 2016-10-28
  • N26-第四周作业-邢岩

    马哥门徒-N26-邢岩   精神练习需要深入认真的工作以及热情的劲头。当你开始练习,你是在挣扎、在反抗,你需要集中精力,然后慢慢进步。那么,我们就开始吧。   第一题,复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   ~]# cp -r /et…

    Linux干货 2017-02-15
  • 建立yum源及yum命令的使用

    一、什么是YUM     YUM的全称为 Yellowdog Update Modifier,其主要目的是为了解决RPM包安装时的依赖关系的问题。YUM只是一个用于软件安装的前端工具,其主要的服务对象还是RPM软件包。     YUM采用C/S架构,即客户端与服务器的模…

    Linux干货 2015-05-11
  • CentOS6删除/etc/fstab和/boot后恢复

    CentOS6删除/etc/fstab和/boot后恢复 背景: Linux CentOS系统和启动相关的文件都在/boot目录下,如果我们将/boot目录下所有的文件都删除,然后在恢复系统,那以后在遇到系统启动问题时就都可以解决了。在这基础上,在将/etc/fstab文件删除,这样更加大了修复的难度,不过这都是可以修复的,这里就将介绍如何修复。 实验环境:…

    2017-09-01
  • Linux程序包管理之RPM

    Linux程序包管理之RPM RPM概念 rpm是什么 RPM 是Ret Hat Package Manager(RPM软件包管理器)的缩写,遵循GPL协议,可以运行在各种Linux上,公认的行业标准。 rpm干什么 对于终端用户来说 简化了Linux系统的安装、卸装、更新和升级的过程,用命令完成 对于开发者来说 RPM允许把软件编码包装成源代码和程序包提供…

    Linux干货 2016-11-22