关注本公众号,一天一个知识点,持续精进!
碎片时间|体系学习
今天是
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脚本编程系列,敬请期待。
领取专属 10元无门槛券
私享最新 技术干货