【Linux学习笔记】《Linux就该这么学》第5章:01.用户身份与文件权限

本章将详细讲解文件的所有者、所属组以及其他人可对文件进行的读(r)、写(w)、执行(x)等操作,以及如何在Linux系统中添加、删除、修改用户账户信息。我们还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置系统权限功能。

本章最后还将讲解如何使用su命令与sudo服务让普通用户具备管理员的权限,不仅可以满足日常的工作需求,还可以确保系统的安全性。

用户身份与能力

在RHEL7系统中用户有下列身份:

管理员UID为0:系统的管理员用户。

系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围

普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

为了方便管理属于同一组的用户,Linux系统中还引入了用户组的概念。

通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

useradd命令

useradd命令用于创建新的用户,格式为“useradd [选项] 用户名”。

使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。

useradd

groupadd命令

groupadd命令用于创建用户组,格式为“groupadd [选项] 群组名”。

usermod命令

usermod命令用于修改用户的属性,格式为“usermod [选项] 用户名”。

用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息。

useradd

passwd命令

passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。

passwd

userdel命令

userdel命令用于删除用户,格式为“userdel [选项] 用户名”。

在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。
passwd

文件权限与归属

Linux系统使用了不同的字符来加以区分文件类型

-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。
c:字符设备文件。
p:管道文件。

每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。

对目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。

文件的读、写、执行权限可以简写为rwx,亦可分别用数字4、2、1来表示,文件所有者,所属组及其他用户权限之间无关联。
rwx
文件权限的数字法表示基于字符表示(rwx)的权限计算而来,其目的是简化权限的表示。

文件的特殊权限

单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUID、SGID与SBIT的特殊权限位。

SUID

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

SGID

SGID主要实现如下两种功能:

让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。

SGID的第一种功能是参考SUID而设计的,不同点在于执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。

我们再介绍两个与本小节内容相关的命令:chmod和chown。

chmod

chmod能够用来设置文件或目录的权限,格式为“chmod [参数] 权限 文件或目录名称”。

chown

chown可以设置文件或目录的所有者和所属组,格式为“chown [参数] 所有者:所属组 文件或目录名称”。

chown和chmod针对目录进行操作时需要加上大写参数-R来表示递归操作,即对目录内所有的文件进行整体操作。

SBIT

SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

RHEL 7系统中的/tmp作为一个共享文件的目录,默认已经设置了SBIT特殊权限位,因此除非是该目录的所有者,否则无法删除这里面的文件。

我们可以使用 chmod 参数o+t 设置SBIT粘滞位权限。

文件的隐藏属性

Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。

chattr命令

chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。

如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。

chattr

lsattr命令

lsattr命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。

文件访问控制列表

如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。

setfacl命令

setfacl命令用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”。

针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。

getfacl命令

getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。

su命令与sudo服务

su命令

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。
su命令格式:su - [用户名]

sudo命令

sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”。
sudo
总结来说,sudo命令具有如下功能:

限制用户执行指定的命令:
记录用户执行的每一条命令;
配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
验证密码的后5分钟内(默认值)无须再让用户再次验证密码。

如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。

总结

本章我们学习了 用户身份与文件权限。

1.在RHEL 7系统中,root管理员是谁?

答:是UID为0的用户,默认是root管理员。

2.如何使用Linux系统的命令行来添加或删除用户?

答:添加和删除用户的命令分别是useradd与userdel。

3.若某个文件的所有者具有文件的读/写/执行权限,其余人仅有读权限,那么用数字法表示应该是什么?

答:所有者权限为rwx,所属组和其他人的权限为r–,因此数字法表示应该是744。

4.某链接文件的权限用数字法表示为755,那么相应的字符法表示是什么呢?

答:在Linux系统中,不同文件具有不同的类型,因此这里应写成lrwxr-xr-x。

5.如果希望用户执行某命令时临时拥有该命令所有者的权限,应该设置什么特殊权限?

答:特殊权限中的SUID。

6.若对文件设置了隐藏权限+i,则意味着什么?

答:无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件。

7.使用访问控制列表(ACL)来限制linuxprobe用户组,使得该组中的所有成员不得在/tmp目录中写入内容。

答:想要设置用户组的ACL,则需要把u改成g,即setfacl -Rm g:linuxprobe:r-x /tmp。

8.当普通用户使用sudo命令时是否需要验证密码?

答:系统在默认情况下需要验证当前登录用户的密码,若不想要验证,可添加NOPASSWD参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值