【Linux8系统学习】用户身份与文件权限(一)

**Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全的则是一系列复杂的配置工作。**文件的所有者、所属组以及其他人可对文件进行的读(r)、写(w)、执行(x)等操作,以及如何在Linux系统中添加、删除、修改用户账户信息。我们还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改或删除。而文件的访问控制列表(Access Control List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。
【Linux8系统学习】用户身份与文件权限(一)
一、Linux用户与用户组
1. UID与GID
在RHEL 8系统中,用户身份有下面这些:
管理员UID为0:系统的管理员用户。:
系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)。
【Linux8系统学习】用户身份与文件权限(一)
为了方便管理属于同一组的用户,Linux系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

另外,在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

2. 用户与用户组相关文件
(1)/etc/passwd

/etc/passwd文件存储与用户账户相关的信息,root用户的账户信息在passwd文件中如下所示,其中冒号作为各部分的分隔符:
• root:x:0:0:root:/root:/bin/bash
从左至右各部分含义如下:
• root:用户名
• x:密码占位,实际密码存储在/etc/shadow中,passwd文件中并没有密码
• 第1个0:用户的UID,root用户UID为0
• 第2个0:用户所属组GID,root用户属于root组,root组的GID为0
• root:对该用户的说明,用于帮助理解该用户
• /root:用户家目录(主目录),root用户的家目录是/root
• /bin/bash:用户的shell程序,Linux支持多种shell程序,通常可以登录用户均使用/bin/bash作为shell程序

(2)/etc/shadow
/etc/shadow文件存储与用户密码相关的信息,root用户的密码相关信息如下所示,其中冒号作为各部分的分隔符:
•root66ShyBnHXD6i8sTslU$ynTcqRosu47jpwqduyQptxLg7qakMeV8hu8U3IqmI/PR81nc/9IylcllRM7aE7nwil1X.jm25
• VCpEWcMsd0H0.:16701:0:99999:7:::
从左至右各部分含义如下:
• root:用户名
66ShyBnHXD6i8sTslU$ynTcqRosu47jpwqduyQptxLg7qakMeV8hu8U3IQmI/PR81nc/9IylcllRM7aE7nwil1X.jm25VCpEWcM
sd0H0.:加密后的root用户密码
• 16701:密码最近修改日期,该日期用距离UNIX时间1970年1月1日的天数来表示
• 0:密码最短有效天数,表示密码至少使用多少天,0表示无限制
• 99999:密码最长有效天数,99999表示永久有效
• 7:密码失效前警告天数,即在密码还有7天失效时发出警告

(3)/etc/group
/etc/group/文件存储与用户组相关的信息,root用户组的相关信息如下所示,其中冒号作为各部分的分隔符:
• root:x:0:user1
从左至右各部分含义如下:
• root:用户组名
• x:用户组密码,通常不使用
• 0:组ID(GID),root用户组的GID为0
• user1:加入该组的普通用户,说明user1已加入到root用户组,拥有root组权限。

二、用户与用户组相关命令
(1)增加用户命令useradd

useradd命令用于在系统中增加用户其基本法如下:
• [[email protected] ~]# useradd user #在系统中增加用户user
该命令将新增一个名为user的用户,同时也将新增一个名为user用户组,该用户组中只有一个user用户,同时将自动创建/home/user/ 目录作为该用户的主目录。该命令将自动 在/etc/passwd、/etc/shadow、/etc/group 等文件中写入与该用户和用户组相关的缺省信息。
在创建用户时也可以使用参数指定该用户与账户相关的信息,其主要参数如下:
参数 作用
• -c:指定该用户的说明信息,默认该说明信息为空
• -d:指定该用户的主目录(家目录) ,(默认为/home/username)
• -e:指定用户账户过期日期 ,格式为YYYY-MM-DD.
• -g:指定用户基本用户组 (必须已存在)
• -G:指定用户附加组 (指定一个或多个扩展用户组)
• -s:指定用户登录后的shell (指定该用户的默认Shell解释器)
• -u:指定用户的UID
useradd命令中的用户参数以及作用
-N 不创建与用户同名的基本用户组

(2)修改用户账户命令usermod
如果在创建用户时,没有指定用户账户的相关信息,在使用过程也可以使用usermod命令对用户账户的相关信息进行修改。usermod命令可以使用参数和useradd基本相同,使用方法也相同,只是-d参数有一点不同,如下所示。
• [[email protected] ~]# usermod -d /home/testuser user2 #修改user2家目录为/home/testuser
使用useradd时-d参数指定的目录会自动创建,而使用usermod时不会自动创建目录,需要手动创建目录/home/testuser
usermod命令中的参数及作用
参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID

(3)修改用户密码命令passwd
passwd命令中的参数以及作用
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
–stdin 允许通过标准输入修改用户密码,如echo “NewPassWord” | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

(4)删除用户命令userdel
userdel命令用于删除用户账户,其基本用法如下:
• [[email protected] ~]# userdel user2 #删除用户user2
• [[email protected] ~]# userdel -r user2 #删除用户user2及与user2相关的所有文档
userdel命令的参数以及作用
参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录
(5)切换用户命令su
su用于切换用户,其基本用法如下:
• [[email protected] ~]# su user1 #切换用户为user1
• [[email protected] ~]# su #切换用户为root,su不加用户名默认为切换到root
• [[email protected] ~]# su - user1 #使用user1的shell成为登录shell
在su命令中,没有“-”只是切换身份,如果要退出该身份,使用命令exit;加“-”表示切换整个shell环境,可以理解为切换得更彻底一些,如果要退出登录环境可以使用命令logout。

(6)与用户组相关命令
常用的与用户组相关命令的基本用法如下:
• [[email protected] ~]# groupadd group1 #增加名为group1的用户组
• [[email protected] ~]# gpasswd -a user1 group1 #将用户user1加入到group1中
• 正在将用户“user1”加入到“group1”组中 #命令执行结果
• [[email protected] ~]# gpasswd -d user1 group1 #将用户user1从group1中删除
• 正在将用户“user1”从“group1”组中删除 #命令执行结果
• [[email protected] ~]# groupdel group1 #删除用户组group1

三、文件权限解析
Linux系统使用了不同的字符来加以区分,常见的字符如下所示。
-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。
c:字符设备文件。
p:管道文件。

1.文件权限解析
在文件的详细信息中,包含不同用户对该文件的访问权限信息,和该文件的所属用户、用户组信息,以目录文件dir的详细信息为例,分析其访问权限。
【Linux8系统学习】用户身份与文件权限(一)
普通文件与目录文件权限含义
【Linux8系统学习】用户身份与文件权限(一)
三、修改文件权限命令
(1)修改文件权限命令chmod
chmod命令中使用的主要符号含义如下:
●操作对象符号
u:修改文件所属用户的权限
g:修改文件所属用户组的权限
o:修改其他用户的权限
a:所有用户
●操作符号
+:在原有的权限上增加某种权限
-:在原有的权限上减去某种权限
=:直接赋予某种权限,这将覆盖原有权限
●权限符号
r:读权限
w:写权限
x:执行权限

chmod命令也使用数字方式修改用户权限,数字与权限的对应关系如图所示
【Linux8系统学习】用户身份与文件权限(一)
(2)改变文件所有者chown
chown命令用于改变文件的所属用户和所属用户组,其基本用法如下:
• [[email protected] ~]chown user1 chownfile #将文件chownfile所属用户改为user1
• [[email protected] ~]chown :group1 chownfile #将文件chownfile所属用户组改为group1
• [[email protected] ~]chown user1:group1 chownfile
#将文件chownfile所属用户改为user1,同时将所属用户组改为group1
• [[email protected] ~]chown -R user1:group1 chowndir/
#将目录chowndir及其下所有子目录及文件的所属用户改为user1,所属用户组改为group1