Linux#4 理解Linux文件权限

关注本公众号,一天一个知识点,持续精进!

碎片时间|体系学习

今天是

2018年的第169

140篇原创

1

什么是用户权限?

用户权限是通过创建用户时分配的用户ID(User ID,缩写为UID)来跟踪的。UID是个数值,每个用户有且唯一。Linux为系统账户预留了500以下的UID值,创建普通用户的账号时,大多数Linux操作系统会将500起始的第一个可用UID分配该账号。

UID信息都被保存在一个/etc/passwd文件中。

上图是一个典型的/etc/passwd文件,文件采用行记录格式,每个记录包括了7个字段:

登录用户名

用户密码(加密后的密码信息存放在/etc/shadow文件中)

UID

GID

用户备注信息

用户的家目录

用户的默认shell

一些常用的用户管理操作包括(以下命令均需要管理员或sudo命令以root用户账户身份才能使用):

useradd

新增用户;默认不会创建家目录,如若需要可使用-m命名选项;使用-u选项可为用户指定特定的UID

userdel

删除特定用户;默认情况下该命令只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该用户的任何文件;加上-r选项,会删除用户的HOME目录(破坏性大,使用前需确认)

usermod

修改用户账户的字段(对应/etc/passwd中的字段);-L参数可用于锁定账户,使账户无法登录,而不用删除账户和用户的数据,要让账户恢复正常,只要加-U参数即可。

passwd

改变用户密码;任何用户都可以使用该命令修改自己的账户密码;只有root用户才有权限改变其他用户的密码;-e选项能强制用户下次登录时必须修改密码。

chpasswd

用于批量修改用户密码。

finger

可用于查看用户的字段信息、最近登录等常用重要信息。

chage

管理用户账户的有效期;相当于创建了临时用户,设定的日期一过期,临时账户就会自动过期;过期账户与锁定账户很相似,账户(数据)任然存在,只是无法登录。

2

什么是组权限?

用户账户在控制单个用户安全性方面很惯用,但在允许一组用户共享资源时就捉襟见肘了。为了达到该目的,Linux系统用了另外一个概念——组(group)。组权限允许多个用户共享一组共用的权限来访问系统上的对象,比如文件、目录或设备之类。

每个组都会有且只有一个唯一的GID——与UID类似。这些信息都存放在/etc/group文件中。

上图是一个典型的/etc/group文件,文件采用行记录格式,每个记录包括了4个字段:

组名

组密码

GID

属于该组的用户列表

不能直接修改/etc/group文件来添加用户到一个已存在的组,而要使用usermod命令来添加。

一些常用的组管理操作包括(以下命令均需要管理员或sudo命令以root用户账户身份才能使用):

groupadd

在系统上创建一个新组;通过-G命令选项将用户添加到指定的用户组中;如果更改了已登录系统账户所属的用户组,该用户必须登出系统后再登录,组关系的更改才能生效。

groupmod

修改组信息;修改组名时,GID和组成员不会变,只有组名会发生变化;由于所有的安全权限都是基于GID的,为此可以随意概念组名而不会影响文件的安全性。

3

理解文件权限

理解文件权限,我们可以从执行ls命令的结果开始。

上图是一个典型的执行ls命令后的截图,需要特别关注第一列信息,该字段用于描述文件和目录权限的码。这个字段的第一个字符代表了对象的类型:

-代表文件

d代表目录

l代表链接

c代表字符型设备

b代表块设备

n代表网络设备

之后有3组三字符的码。每一组三字符表示三重访问权限:

r代表对象是可读的;

w代表对象是可写的;

x代表对象是可执行的;

如果没有某种权限,在该权限位会出现单破折线。这3组三字码分别对应对象的3个安全级别:

对象的属主;

对象的属组;

除了上述以外的其他用户。

如上图所示,文件夹(目录)Work有下面3组权限:

rwx :文件夹的属主friendfb对该目录有可读、可写、可执行权限;

r-x :文件夹的属组staff对该目录有可读、可执行权限,无可写权限;

r-x :其他用户对该目录有可读、可执行权限,无修改权限

具体文件权限说明详见表1。

表1 Linux文件权限码

一些常用的安全权限设置操作包括:

chmod

用于改变文件和目录的安全性设置。

chown

用于改变文件的属主。

4

小结

本文主要就Linux的文件权限进行了介绍。

Linux通过UID、GID限制对文件、目录以及设备的访问。Linux将用户账户信息存储在/etc/passwd文件中,将组信息存储在/etc/group文件中;每个用户被分配了有且唯一的用户ID以及对应的用户登录名;组也被分配了有且唯一的组ID以及对应的组名;组可以包含一个或多个用户以支持对系统资源的共享访问;此外,系统提供了useradd、userdel、usermod、groupadd、groupmod等命令用于修改用户、组的信息。

Linux采用复杂的位系统来判定文件和目录的访问权限。每个文件都有三个安全等级:文件属主、文件属组、其他用户的访问权限。而每个安全等级通过3个访问权限位来定义:r、w、x;如果权限被否定了,权限对应的符号会用单破折线来代替。

综上,我们通过4篇文章对Linux shell编程进行了预热,包括了对常用的用户/管理命令、环境变量、文件权限等重要概念进行重点介绍;下一节中,我们将进入shell脚本编程系列,敬请期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619B063KV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券