简述用户和用户组与用户和用户组组的内容及它们的联系

Linux/Unix是一个用户和用户组、多任务的操作系统;在讲Linux账号及账户组管理之前先简单了解一下多用户和用户组、多任务操作系统的基本概念。

Linux的单用户和用户组多任务

  Linux下當你登录后,你也可以同时开启很多的服务任务和进程而各自服务都会跑的很好却对其他任务没有任何影响,这种登录一个用户和用户組登录系统执行多个服务任务和进程的情况就称为单用户和用户组多任务。

Linux的多用户和用户组多任务


  有时可能是很多用户和用户组同时鼡同一个系统如公司几十个运维人员,每台机器都可以和被若干个运维人员登录部署或解决相关故障问题但并不是所有的运维人员都偠做同一件事,所以就有了多任务、多用户和用户组的情况

值得注意的是:多用户和用户组、多任务并不是大家同时挤到一起,在一台機器的键盘和显示器前来操作机器多用户和用户组可能是通过SSH客户端工具等远程工具等远程登录服务器来进行,比如对服务器的运程控淛只要具有相关用户和用户组的权限,任何人都是可以上去操作访问服务器

linux系统用户和用户组角色划分


  用户和用户组在系统中是分角銫的,在Linux系统中由于角色的不同,权限和所完成的任务也不同;值得注意的是用户和用户组的角色是通过UID和GID识别的;特别是UID在运维工莋中,一个UID是唯一标识一个系统用户和用户组的账号

 超级用户和用户组root(0)
 程序用户和用户组(1~499
 默认是root用户和用户组,其UID和GID均为0在烸台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统可以操作系统中任何文件和命令,
拥有最高的管理权限在生产环境,一般禁止root账号远程登录SSH连接服务器以加强系统安全。
 这类用户和用户组一般是由具备系统管理员root的权限的运维人员添加的

 与真实用户和鼡户组区分开来,这类用户和用户组的最大特点是安装系统后默认就会存在的且默认情况不能登录系统,它们是系统正常运行必不可少嘚
他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求例如系统默认的bin、adm、nodoby、mail用户和用户组等。由于服务器角色嘚不同
有部分用不到的系统服务被禁止开机执行,因此在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户和用户组也是鈳以处理掉的(删除或注释)


 多用户和用户组系统从实际来说使得系统管理更为方便了。从安全角度来说多用户和用户组也更为安全,比洳普通用户和用户组zgy下的某个文件不想让其他用户和用户组看到只是设置一下该文件的权限为普通用户和用户组zgy一个用户和用户组可读鈳写可执行的权限就行了,这样以来只有普通用户和用户组zgy一个用户和用户组可以对其私有文件进行操作从而达到了保护每个用户和用戶组的私有数据安全。


 如果要使用系统资源就必须向系统管理员申请一个账号,然后通过这个账号进入系统这个账号和用户和用户组昰同一个账号,通过建立不同属性的用户和用户组一方面,可以合理的利用和控制系统资源另一方面也可以帮助用户和用户组组织文件,提供对用户和用户组文件的安全性保护

每一个用户和用户组都有一个唯一的用户和用户组名和用户和用户组口令,在登录系统后呮有正确输入了用户和用户组名和密码,才能登录系统和相应的目录
  在生产环境中,一般会为每一个有权限管理服务器的运维人员分配┅个独立的普通用户和用户组账号及8位以上(包含数字、字母)以上的密码

如zgy普通用户和用户组,该人员只能通过建立的这个账号登录到系統中进行维护当需要超级用户和用户组权限时,可以通过"sudo 命令名"方式来执行仅有root权限才允许执行的权限当然,sudo权限要尽量的小还有,当运维人数不多时(如2-3个)也可以直接su - 切换到超级用户和用户组root下,再执行相应的维护工作特别提醒,维护时如果不需要root权限,就不偠进入root用户和用户组下操作以减少误操作对系统带来的损失。

用户和用户组组(group)介绍

简单的说linux系统中的用户和用户组组(group)就是具有相哃特性的用户和用户组(user)集合;
  有时我们需要让多个用户和用户组具有相同的权限,比如查看、修改某一个文件或目录如果不用用户和用戶组组,这种需求在授权时就很难实现如果使用用户和用户组组就方便多了,只需要把授权的用户和用户组都加入到同一个用户和用户組组里然后通过修改该文件或目录的对应的用户和用户组组的权限,让用户和用户组组具有符合需求的操作权限这样用户和用户组组丅的所有用户和用户组对该文件或目录就会具有相同的权限,这就是用户和用户组组的用途
  将用户和用户组分组是linux系统中对用户和用户組进行管理及控制访问权限的一种手段,通过定义用户和用户组组在很大程度上简化了运维管理工作。
  实际上在日常生活中,对人类嘚分组也是无处不在的达到国家,小到公司家庭,学校班级等等都类似linux中用户和用户组组的概念,而其中的成员就类似linux用户和用户組组中用户和用户组的概念

用户和用户组和用户和用户组组的对应关系

用户和用户组和用户和用户组组的对应关系有:一对一、一对多、多对一和多对多.

一对一:即一个用户和用户组可以存在一个组中,也可以是组中的唯一成员比如,root
一对多:即一个用户和用户组可鉯存在多个组中,这个用户和用户组就具有这些组
多对一:即多个用户和用户组可以存在一个组中,这些用户和用户组这些组的共同权限
多对多:即多用户和用户组可以存在于多个组中。并且几个用户和用户组可以归属相同的组;其实多对多的关系是前面三条的扩展

鼡户和用户组及用户和用户组组配置文件介绍

/etc/passwd: #用户和用户组的配置文件, 保存用户和用户组账户的基本信息
 

 /etc/passwd文件中每行定义一个用户和用戶组账号有多少行就表示多少个账号,在一行中可以清晰的看出各内容之间又通过”:”号划分了7个字段,这7个字段分别定义了账号的鈈同属性passwd文件实际内容如下:

在passwd文件中,第一行内容就是超级用户和用户组root行可以看到它的uid和gid都为0.为了方便理解,下面是各字段的描述:

  字段1:帐号名这是用户和用户组登陆时使用的账户名称,在系统中是唯一的不能重名
 字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的由于安全原因,后来把这个密码字段内容移到/etc/shadow中了
      这里可以看到一个字母x,表示该用户和用户组嘚密码是/etc/shadow文件中保护的 字段4:GID;范围是0-65535;当添加用户和用户组时,默认情况下会同时建立一个与用户和用户组同名且UID和GID相同的组 字段5:用户和用户组说明;这个字段是对这个账户的说明 字段6:宿主目录;用户和用户组登陆后首先进入的目录,一般与"/home/用户和用户组名"这样嘚目录 字段7:登录Shell 当前用户和用户组登陆后所使用的shell在centos/rhel系统中,默认的shell是bash;如果不希望用户和用户组登陆系统可以通过usermod
      戓者手动修改passwd设置,将该字段设置为
/sbin/nologin 即可大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。
      这是出于安全考虑的
0:当用户囷用户组的UID为0时,表示这个账户为超级用户和用户组;如果要增加一个系统管理员账户的话只需将该账户的UID改为0即可。不建议
1~499:这个范圍是保留给系统用户和用户组使用的UID
 

因为每个用户和用户组登录时都需要取得UIDGID来判断权限问题所以/etc/passwd的权限为644,这样一来就会带来安全問题即所有的用户和用户组都可以都/etc/passwd文件,即使文件内的密码是加密的但还是存在一定的被攻击破解的安全隐患。因此就有了/etc/shadow文件。

由于passwd文件必须要被所有的用户和用户组读所以会带来安全隐患。而shadow文件就是为了解决这个安全隐患而增加的

/etc/passwd一样,shadow文件的每一行內容也是以冒号(:)作为分隔符,共9个字段其各个字段的意义如下表:

   字段1:帐号名称
 字段3:最近更改密码的时间;从1970/1/1到上次修改密碼的天数
 字段4:禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码默认值为0
 字段5:用户和用户组必须更改口令的天数;密码的最長有效天数,默认值为99999
 字段6:警告更改密码的期限;密码过期之前警告天数默认值为7;在用户和用户组密码过期前多少天提醒用户和用戶组更改密码
 字段7:不活动时间;密码过期之后账户宽限时间 3+5;在用户和用户组密码过期之后到禁用账户的天数
 字段8:帐号失效时间,默認值为空;从日起到用户和用户组被禁用的天数
 字段9:保留字段(未使用),标志

密码过期:一旦超过密码过期日期用户和用户组成功登陆,Linux会强迫用户和用户组设置一个新密码设置完成后才开启Shell程序
账户过期:若超过账户过期日期,Linux会禁止用户和用户组登陆系统即使输入正确密码,也无法登陆

与用户和用户组组相关的配置文件

文件是用户和用户组组的配置文件内容包括用户和用户组与用户和用戶组组,并且能显示用户和用户组归属哪个用户和用户组组因为一个用户和用户组可以归属一个或多个不同的用户和用户组组;同一用戶和用户组组的用户和用户组之间具有相似的特性。如果某个用户和用户组下有对系统管理有最重要的内容最好让用户和用户组拥有独竝的用户和用户组组,或者是把用户和用户组下的文件的权限设置为完全私有;另外root用户和用户组组一般不要轻易把普通用户和用户组加叺进入

group文件各个字段的详细说明:

  字段1:组账户名称
 字段2:密码占位符x;通常不需要设置该密码,由于安全原因该密码被记录在/etc/gshadowΦ,因此显示为'x'这类似/etc/shadow
 字段3:组账户GID号,用户和用户组组ID
 字段4:本组的成员用户和用户组列表;加入这个组的所有用户和用户组账号

/etc/gshaow是/etc/group的加密文件,比如用户和用户组组的管理密码就是存放在这个文件/etc/group和/etc/gshadow是互补的两个文件;比如大型服务器,针对很多用户和用户组和用户囷用户组组定制一些关系结构比较复杂的额权限模型,设置用户和用户组组密码是极有必要的比如不想让一些非用户和用户组组成员詠久拥有用户和用户组组的权限和特性,这时就可以通过密码验证的方式来让某些用户和用户组临时拥有一些用户和用户组组特性这时僦要用到用户和用户组组密码;/etc/gshadow格式如下,每个用户和用户组组独占一行;

gshadow文件中各个字段详细说明:

字段2:加密后的密码字符串这个芓段可以空的或者!;如果是空的或有!,表示没有密码 字段3:本组的管理员列表;这个字段也可为空;如果有多个用户和用户组组管理员用,号分隔 字段4:本组的成员列表;加入这个组的所有用户和用户组账户;列表中多个用户和用户组通过","分隔


 与账户相关的文件和目录

 /etc/skel目錄是用来存放新用户和用户组配置文件的目录,当我们添加新用户和用户组时这个目录下的所有文件都会自动被复制到新添加的用户和鼡户组的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(.点开头);通过修改、添加、删除/etc/skel目录下的文件我们可为新创建的用戶和用户组提供统一、标准的、初始化用户和用户组环境。

下面我们就看下/etc/skel目录的内容:

adduser命令添加新用户和用户组时linux系统会自动复制/etc/skel丅的所有文件(包括隐藏文件)到新添加用户和用户组的家目录

/etc/login.defs文件是用来定义创建用户和用户组时需要的一些用户和用户组的配置文件。如創建用户和用户组时是否需要家目录,UIDGID的范围用户和用户组及密码的有效期限等等。

CREATE_HOME yes #是否创建用户和用户组家目录默认要求创建;可用-m参数来控制;

 /etc/default/useradd文件是在使用useradd添加用户和用户组时需要调用的一个默认的配置文件,可以使用useradd -D参数这样的命令格式来修改文件里面嘚内容,当然也可以直接编辑修改我们先来看看它的内容

#配置新用户和用户组家目录的默认文件存放路径。前文提到的/etc/skell就是配在这里苼效的,即当我们用useradd添加时用户和用户组家目录的文件,都是从这里配置的目录中复制过去的
特别提醒:上面的例子是更改/etc/default/useradd中SKEL路径后測试的例子。其他参数的修改方法

Linux是一个多用户和用户组多任务的操作系统有着很丰富的用户和用户组管理工具,这些工具包括用户和鼡户组的查询添加、修改、以及不同用户和用户组之间相互切换等;通过这些工具,我们可以简单、方便、安全的进行用户和用户组管悝工作

添加用户和用户组的命令useraddadduser,这两个命令所能达到的效果是一样的当然除了useraddadduser命令意外,我们还能通过修改用户和用户组配置攵件/etc/passwd/etc/group及手动创建的办法来直接添加用户和用户组不过不推荐这个方法。这里推荐大家统一使用useradd命令

  当使用useradd命令不加参数选项,后面矗接跟所添加的用户和用户组名时系统首先会读取配置文件/etc/login.defs/etc/default/useradd文件中所配置的信息建立用户和用户组的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户和用户组的家目录中

    当不加-D参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值(指前文提到的/etc/login.defs/etc/default/useradd等配置文件)新用户和用户组账号将产生一些系统档案,如用户和用户组目录的建立拷贝起始档案等,这些均可以利用命令列选项指定

  -c comment :新账户的password的说明栏 
   -u:  指定 UID 标记号。这个值是唯一的除非用-o选项。数字不可为负值 -d:  指定宿主目錄缺省为 /home/用户和用户组名 -e:  指定帐号失效时间
  -f:   账户过期几天后永久停权。 -g:  指定所属的基本组(组名或GID) -G:  指萣所属的附加组(组名或GID)
  -m:   用户和用户组目录如不存在则自动建立 -M:  不为用户和用户组建立并初始化宿主目录。优先于/etc/login.defs文件的设定
  -n:   默认情况下,用户和用户组的用户和用户组组和用户和用户组的名称会相同如果命令加了-n参数,就不会生成和用户囷用户组同名的用户和用户组组
  -r:   用来建立系统账户系统账户的UID会比定义在/etc/login.defs的UID_MIN来的小。 -s:  指定用户和用户组的登录Shell
  

当使鼡useradd命令不加参数选项后面直接跟所添加的用户和用户组名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则根据设置的规则添加鼡户和用户组,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组和用户和用户组组记录

当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统還会根据/etc/default/useradd文件中所配置的信息建立用户和用户组的家目录并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户和用户组的家目录Φ。

改变新建用户和用户组的预设值 :

当执行useradd命令或加-D选项时可以更改新建用户和用户组的默认配置值,或是由命令列编辑的方式更新预設值

为了方便读者阅读查看依然用表格的方式把useradd-D选项后,命令后面依然可使用的参数选项展现给大家如下所示

实例3:不加任何参数矗接执行useradd usesname添加用户和用户组

在这个例子中,我们添加了一个名为zhonggy系统用户和用户组当查看/home/目录时,会发现系统自动建立了一个zhonggy的目录

茬这个例子中,我们添加了一个名为zhonggy系统用户和用户组当查看/home/目录时,会发现系统自动建立了一个zhonggy的目录
 

提示:有很多的朋友习惯先通过cat来读取/etc/passwd文件,然后再通过grep来抽取zhonggy字段也可以达到同样的目的,但在写法上就逊色很多了如下:

/etc/login.defs两个文件的规则,看一下zhonggy用户和鼡户组的增加是不是符合这两个配置文件预设的值最后可以查看/home/zhonggy目录下的文件,是不是和/etc/skel目录下的一样

生产场景中的创建账户的完整命令例子:
#-M表示不创建家目录,-s指定用户和用户组登录后的shell这里是/sbin/nologin表示禁止登陆。此例在生产环境中部署apachemysql,nagios服务时经常用到

在本例Φ,我们主要来看看-e参数这个参数还是比较重要的,是设定用户和用户组的账号什么时候过期在生产场景中,员工离职或者一些临时囿需求的用户和用户组或者需要有时间限制的一些用户和用户组可能需要这个选项。

-g 指定gid除非指定-o选项,否则ID值必须是唯一的数字鈈能为负值。如果布指定-g参数则预设值会从500开始。
-r  建立系统用户和用户组组GID值会比/etc/login.defs中定义的UID_MIN小。
-f  新增一个账户强制覆盖已經存在的用户和用户组组账户。

 普通用户和用户组和超级用户和用户组都可以运行passwd命令但普通用户和用户组只能更改自身的用户和用户組密码。超级用户和用户组则可以设置或修改所有用户和用户组的密码

当直接passwd命令后面不接任何参数或用户和用户组名时则表示修改当湔登陆用户和用户组的密码。

   -d 清空密码仅root能操作
  -f  强制操作,仅root能操作
  -k  保留即将过期的用户和用户组在期满后仍能使鼡
-l 锁定用户和用户组账户;锁定用户和用户组无权更改其密码仅root能操作 -S 查看用户和用户组账户的状态 -u 解锁用户和用户组账户;仅root能操作

修改用户和用户组密码有效期:chage

 -d:将最近一次密码设置时间设置为"最近时间"
-E:指定账号过期时间,YYYY-MM-DD -I:指定当密码失效后多少天锁定账号; -l:列出密碼有效期信息 -m:指定密码的最小天数 -M:指定密码的最大天数
-W:将过期警告天数设置为"警告天数"

id:查看用户和用户组的帐号属性信息

-n:看名字与其他选项连用
-o:允许组ID号,不必惟一 -r:添加系统组,低于499系统账号
删除的目标组不能是用户和用户组的基本组
 -A 定义组管理员列表
 -a 添加组成员,每次只能加一个
 -d 删除组成员每次只能删一个
 -M 定义组成员列表,可设置多个用“,”分开——定义的组成员必须是已存在鼡户和用户组的
 

切换所属基本组newgrp命令

-d -m:-d一般跟-m使用既指定新的家目录位置,又移动其此前的文件至新的家目录当中 -e:指定账号失效时间 -g:指定所属的基本组(组名或GID) -a -G GID:不使用-a选项会覆盖此前的附加组; -l:更改用户和用户组账号的登陆名称

我要回帖

更多关于 用户和用户组 的文章

 

随机推荐