0


【Linux】用户与用户组,用户账号系统文件

一 用户与用户组

1.1 含义

  1. 用户 (User):- 用户是系统的使用者。每个用户都有一个唯一的用户名和密码。- 当用户在Linux系统上执行命令或访问文件时,系统会检查该用户是否有相应的权限。- 用户的主要目的是确保只有授权的用户可以访问系统的特定部分。- 可以通过id命令查看当前用户的ID和其他相关信息

UID为用户ID

  1. 用户组 (User Group):- 用户组是一组用户的集合。它是为了方便管理和分配权限而创建的。- 一个用户可以是一个或多个用户组的成员。- 当为一个文件或目录设置权限时,可以指定哪些用户组可以访问它。- 例如,sudo命令通常只允许root组的成员执行。- 可以通过groups命令查看当前用户所属的所有用户组

GID为用户组ID

用户账户分类:

1 超级用户root (0):

默认是root用户,其UID和GID均为0。

在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。

在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全

**2.程序用户(1~499): **

与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,

它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。

例如系统默认的bin、adm、nodoby、mail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,

因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)

3 普通用户(500~65535):

这类用户一般是由具备系统管理员root的权限的运维人员添加的

1.2 用户相关语法

1.2.1 useradd(添加用户账号)

useradd 选项 用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录

  • G 用户组指定用户所属的附加组

-s Shell文件指定用户的登录Shell

  • u 用户号指定用户的用户号,如果同时有-选项,则可以重复使用其他用户的标识号
    用户名:指定新账号的登录名

示例1:
useradd -d home/sam -m sam2
此命令创建了一个用户san ,其中-d和-m选项用来为登录名sam2产生一个主目录
/home/sam (/home为默认的用户主目录所在的父目录)


示例2:
此命令新建了一个用户gem,该用户的登录Shell是bin/sh,它属于group用户组,同
useradd-s/bin/ sh-g group -G adm, root gem
其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd adm

注1:增加用户账号就是在/etc/passwd文件中为新用户增加一条记录
同时更新其他系统文件如/etc/shadow,/etc/group等
注2:Linux提供了集成的系统管理工具usercorf,它可以用来对用户账号进行统一管理

1.2.2 userdel(删除用户账号)

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录

userdel选项用户名
常用的选项是-r,它的作用是把用户的主目录一起删除


示例1:
userdel -r sam
此命用在系经文件中(主要是/etc/passd,/ect/shadow/,/ect/group)等记录,同时删除用户的主目录

1.2.3 usermod(修改用户账号)

usermod 用于修改用户的属性和配置。通过 usermod 命令,可以对用户的各种属性进行修改,如用户的用户名、用户ID、用户组ID、用户主目录、用户登录shell等。


然而,需要注意的是,usermod 命令不允许改变正在线上的使用者帐号名称。当使用 usermod 命令来改变用户ID(user ID)时,必须确保该用户没有在电脑上执行任何程序。此外,还需要手动更改使用者的 crontab 文件和 at 工作档。如果系统采用 NIS server,还需要在 server 上更改相关的 NIS 设定。

usermod 命令的语法是 usermod [选项] [参数]。其中,选项包括:

  • -c<备注>:修改用户帐号的备注文字。
  • -d<登入目录>:修改用户登入时的目录。
  • -e<有效期限>:修改帐号的有效期限。
  • -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号。
  • -g<群组>:修改用户所属的群组。
  • -G<群组>:修改用户所属的附加群组。
  • -l<帐号名称>:修改用户帐号名称。
  • -L:锁定用户密码,使密码无效。
  • -s<shell>:修改用户登入后所使用的shell。
  • -u<uid>:修改用户ID。
  • -U:解除密码锁定。
    参数 登录名 指定了要修改信息的用户登录名。

1.2.4 passwd(用户口令的管理)

passwd 选项 用户名

可使用的选项:

-l 锁定口令,即禁用账号

-u 口令解锁。

-d 使账号无效

-f 强迫用户下次登入时修改密码。如果是默认用户名,则修改当前用户的口令


示例1:修改密码

假设当前用户是sam,则下面的命令修改该用户自己的口令

pass

Old password: *******
New password:********

Re-enter new password: ************

超级用户,可以用下列形式指定任何用户的口令

pass sam

New password: *********

Re-enter new password: ***********

注1:普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两边新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户输入口令,就不需要知道原口令

示例2:用户指定空口令时

passwd -d sam

此命令将用户sam的口令删除,这样用户sam下一次登陆时,系统就不再允许该用户登入了


示例3:passwd命令还可以用 -l(lock)选项锁定某一用户,使其不能登入

解锁用-u passwd -l sam

1.2.5 su(切换用户)

su username

1.2.6 退出登入方式

exit
这是最常用的方法。只需在命令行界面输入
exit

,然后按下回车键即可退出当前用户。

exit

命令会立即退出当前用户,并返回到上一级用户或登录界面。

logout

注意:在某些情况下,

logout

exit

命令可能具有相同的效果,特别是在shell提示符下使用时

ctrl+d

在大多数shell中,按下

Ctrl+D

组合键也可以退出当前用户的登录会话。这通常与

logout

命令有相同的效果。

1.3 用户组相关语法

1.3.1 groupadd(增加用户组)

groupadd 选项 用户组
选项有:
-g GID指定新用户组的组标识号(GD)
#一般与-选项同时使用,表示新用户组的GD可以与系统已有用户组的GID相同。


示例1:
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的
基础上加1


示例2:
groupadd -g 101 group2
此命令向系统中增加了一个新组group2同时指定新组的组标识号是101

1.3.2 groupdel (删除用户组)

如果删除一个已有的用户组,使用 groupdel命令

groupdel 用户组

示例:

groupdel group1

1.3.3 groupmod (修改用户组)

修改用户组的属性
groupmod 选项 用户组
常用的选项有:
-g GID为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组将用户组的名字改为新名字


示例1:
groupmod -g 102 group2
此命令将组group2的组标识号修改为102


示例2:
groupmod -g 10000-n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3

1.3.4 newgrp (切换用户组)

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组


示例1:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附
加组

二 用户账户系统文件

2.1 /etc/passwd

/etc/passwd文件是用户管理工作涉及的最重要的一个文件

root:x:0:0:Superuser:/:

daemon:x:1:1:System daemons:/etc:

bin:x:2:2:0wner of system commands:/bin:

sys:x:3:3:0wner of system files:/usr/sys:

adm:x:4:4: System accounting:/usr/adm:

uucp:x:5:5:UUCP administrator:/usr/lib/uucp:

auth:x:7:21: Authentication administrator:/tcb/files/auth:

cron:x:9:16:Cron daemon:/usr/spool/cron:

listen:x:37:4:Network daemon:/usr/net/nls:

lp:x:71:18:Printer administrator:/usr/spool/lp:

sam:x:200:50: Sam san:/home/sam:/bin/sh

从上面的列子可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号:分隔为7个字段,格式如下

用户:口令:用户标识号:组标识号:注释性描述:主目录:登陆Shell


1、“用户名”是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。
头。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。


2、“口令”一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Limx 系统(如SWR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或“*”。


3、“用户标识号”是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是065 535。0是超级用户root的标识号,199由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。


4、“组标识号”字段记录的是用户所属的用户组。

它对应着/etc/group文件中的一条记录。


5、“注释性描述”字段记录用户的一些个人情况。
造个全愤舜。例如用户的真实姓名、电话、地址等,系统中,这个字段的格式并没有什么实际的用途。在不同的Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。


6、“主目录”,也就是用户的起始工作目录。
它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。


7、用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即she11°She11是用户与Limux系统之间的接口。Limux的She11有许多种,每种都有不同的特点。

常用的有sh(Boume Shell),csh(C Shell),ksh(Kom Shell),tcsh(TENEX/TOPS-20 type CShell),bash(Bourne Again Shell)等。


利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中.


8、系统中有一类用户称为伪用户(rseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求

2.2 /etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一 一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用”:“隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

上方格式说明:

"登录名”:是与/etc/passwd文件中的登录名相一致的用户账号
"口令":字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{ ./0-9A-Za-z }中的字符,则对应的用户不能登录
"最后一次修改时间":表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
"最小时间间隔":指的是两次修改口令之间所需的最小天数。
"最大时间间隔":指的是口令保持有效的最大天数。
"警告时间":字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
"不活动时间":表示的是用户没有登录活动但账号仍能保持有效的最大天数。
"失效时间":字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了

2.3 /etc/group

该/etc/group主要存储用户组的信息

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员

格式:组名:口令:组标识号:组内用户列表

格式说明:

"组名":是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令":字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是 * 。
"组标识号":与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表":是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/m0_73192864/article/details/136244612
版权归原作者 .Doll 所有, 如有侵权,请联系我们删除。

“【Linux】用户与用户组,用户账号系统文件”的评论:

还没有评论