欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux编程 16 文件权限(组管理 groupadd, groupmod,文件权限介绍)

程序员文章站 2022-06-23 14:44:41
一.用户组 前面章节知道用户账户在控制单个用户安全性方面很好,但涉及到共享资源或把用户类型分组时,组概念就出来了。 组权限允许多个用户对系统中的对象(比如文件,目录,设备等)共享一组共用的权限。 在centos中创建一个用户会为该用户单独创建一个组,这样可以更安全一些。 1.1 /etc/group ......

一.用户组

  前面章节知道用户账户在控制单个用户安全性方面很好,但涉及到共享资源或把用户类型分组时,组概念就出来了。 组权限允许多个用户对系统中的对象(比如文件,目录,设备等)共享一组共用的权限。 在centos中创建一个用户会为该用户单独创建一个组,这样可以更安全一些。

  1.1   /etc/group 文件
    与用户一样,组信息也保存在系统的一个文件中。/etc/group文件包含系统上用到的每个组的信息。如下图所示:
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)
    gid在500以内属于系统账户,而用户组的gid则从500开始分配(好像不同发布版有所不同)。上面有三个字段:组名,组密码,gid。组密码是允许非组内成员通过组密码临时成为该组成员,但这功能并不常用。创建组时不能直接通过/etc/group文件来添加用户到一个组,要用usermod命令,上篇有讲到该命令。

  1.2   创建新组 groupadd
    
下面使用groupadd 命令在系统上创建新组(gtest),如下图所示:
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)
    在创建新组后,默认没有用户被分配到该组下,使用usermod或useradd都可以将用户分配到指定组:例如之前安装mysql时,使用useradd来创建mysql用户,并指定到mysql组中.如下图所示:
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)
    下面使用useradd来创建用户gtest1和gtest2,指定到gtest组8001中,如下图所示:
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)

  1.3   修改组
    
修改组使用groupmod命令可以修改已有组的gid(-g选项)或组名(-n选项)。当修改组名时,gid和组成员不变,只有组名改变,由于所有安全权限都是基于gid的,所以随变修改组名不会影响文件的安全性。下面使用groupmod –n来修改gtest组名为gtest1。
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)

 

二.文件权限

在了解用户和组之后,下面来解读文件权限,通过ls 命令输出来介绍分析。下面随意定位在个目录下。
      Linux编程 16 文件权限(组管理  groupadd, groupmod,文件权限介绍)
上面结果第一列,就是描述文件和目录权限的编码。第一列的第一个字符分别代表了对象的类型:
(1)     – 代表文件

(2)     d 代表目录

(3)     l  代表链接

(4)     c 代表字符型设备

(5)     b 代表块设备

(6)     n 代表网络设备

    第一列之后有3组三字符的编码,每一组定义了3种访问权限,没有权限是单破折线:
    (1)     r 代表对象是可读的

    (2)     w 代表对象是可写的

    (3)     x 代表对象是可执行的

    上面3组权限分别对应对象的3个安全级别:对象的属主,对象属组,系统其它用户

    例如:rwxr-xr-x 这样一组。前三个字符(rwx)是对象的属主权限(用户hsr),中间三个字符(r-x)是对象属组的权限(组hsr下的用户),后面三个字符(r-x)是系统其它用户权限。

    在上面这一组权限中,属组和其它用户对该文件没有写入权限,只有读和执行权限。