用户与组

一、用户与组的概念

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

相关推荐

  • grep与正则表达式

    grep与正则表达式 grep与正则表达式 grep 正则表达式 grep 使用语法:grep [-abcEFGhHilLnqrsvVwxy][-C<显示列数>][-e<范本样式>][-f<范本文件>][范本样式][文件或目录…]  功能说明:查找指定文件或标准输入里符合条件的字符串 常用选项 -a…

    Linux干货 2016-11-05
  • N22期-第6周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysint /tmp vim /tmp/rc.sysinit :%s@^[[:space:]]\+@#&@g 2、复制/boot/grub/grub.conf至/tmp目…

    Linux干货 2016-10-09
  • 软件管理

    ldd   /path/to/binary_file       查看二进制所依赖的库文件 ldconfig  -p  查看已缓存的库文件名和文件路径 配置文件 :/etc/ld.so.conf,   /etc/ld.so.conf.d/*.conf 缓存文件:/etc/ld.so.cac…

    Linux干货 2017-06-11
  • 马哥教育网络班22期-第4周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@zck ~]# cp -r /etc/skel /home/tuser1 [root@zck ~]# ll -d /hom…

    Linux干货 2016-09-02
  • 系统基础之文件管理工具

    系统基础之文件管理工具   linux的重要哲学思想之一,一切皆文件.那作为系统管理员,就要求对文件的操作管理特别熟悉.那么下面介绍的一个工具可以帮助到大家,更有效,快捷的完成对文件的处理.下面让我们来认识以下的工具. 文本工具: 文件内容:   cat: 复制标准输入到标准输出     选项:   &nbs…

    Linux干货 2016-08-07
  • 在马哥学习linux第一天的感受

         来马哥教育好几天了,昨天算是正式开始,在昨天早上,举行了开班典礼,各位老师助教为我们介绍了在马哥教育进行培训的相关注意事项,下午进行了两场测试,首先有一个摸底测试,不得不说我真的是太菜了,除了一些比较简单的题目我还有些把握,相当一部分我都是似曾相识,但是也不是很确定,还有很大一部分我根本听都没听说过,看到别人都写的满满…

    Linux干货 2017-07-11