一 用户与用户组
1.1 含义
- 用户 (User):- 用户是系统的使用者。每个用户都有一个唯一的用户名和密码。- 当用户在Linux系统上执行命令或访问文件时,系统会检查该用户是否有相应的权限。- 用户的主要目的是确保只有授权的用户可以访问系统的特定部分。- 可以通过
id
命令查看当前用户的ID和其他相关信息UID为用户ID
- 用户组 (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],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
版权归原作者 .Doll 所有, 如有侵权,请联系我们删除。