文件权限

设置文件的权限和属主

说明

Linux将所有对象都当作文件来处理,即使一个目录也被看作是包含有多个其他文件的大文件。因此,Linux中最重要的就是文件和目录的安全性。文件和目录的安全性主要通过权限和属主来保证。

openEuler默认对系统中的常用目录、可执行文件和配置文件设置了权限和属主。

实现

以/bin目录为例,修改文件权限和文件属主的操作如下:

  • 修改文件权限。例如将/bin目录权限设置为755。

    1. chmod 755 /bin
  • 修改文件属主。例如将/bin目录的拥有者和群组设置为root:root。

    1. chown root:root /bin

删除无主文件

说明

系统管理员在删除用户/群组时,存在着忘记删除该用户/该群组所拥有文件的问题。如果后续新创建的用户/群组与被删除的用户/群组同名,则新用户/新群组会拥有部分不属于其权限的文件,建议将此类文件删除。

实现

删除用户ID不存在的文件

  1. 查找用户ID不存在的文件。

    1. find / -nouser
  2. 删除查找到的文件。其中 filename 为用户ID不存在文件的文件名。

    1. rm -f filename

删除群组ID不存在的文件

  1. 查找群主ID不存在的文件。

    1. find / -nogroup
  2. 删除查找到的文件。其中 filename 为用户ID不存在文件的文件名。

    1. rm -f filename

处理空链接文件

说明

无指向的空链接文件,可能会被恶意用户利用,影响系统安全性。建议用户删除无效的空链接文件,提高系统安全性。

特殊场景

openEuler系统安装完成后,可能存在空链接文件,这些空链接文件可能有对应用途(有些空链接文件是预制的,会被其他组件依赖)。请用户根据实际环境进行处理,处理方式请参见实现

例如,openEuler支持UEFI和legacy BIOS两种安装模式,两种引导场景支持的grub相关包默认都安装,当用户选择legacy BIOS模式安装时,形成空链接文件“/etc/grub2-efi.cfg”;当用户选择UEFI模式安装时,会形成空链接文件“/etc/grub2.cfg”,需要用户根据实际情况处理空链接。

实现

  1. 通过如下命令查找系统中的空链接文件。

    1. find dirname -type l -follow 2>/dev/null

    文件权限 - 图1 说明:
    dirname为搜索目录的名称,通常需要关注系统关键目录:/bin、/boot、/usr、/lib64、/lib、/var等。

  2. 如果此类文件无实际作用,可通过如下命令删除。

    1. rm -f filename

    文件权限 - 图2 说明:
    filename为步骤1找出的文件名。

设置守护进程的umask值

说明

umask值用来为新创建的文件和目录设置缺省权限。如果没有设定umask值,则生成的文件具有全局可写权限,存在一定的风险。守护进程负责系统上某个服务,让系统可以接受来自用户或者是网络客户的要求。为了提高守护进程所创建文件和目录的安全性,建议设置其umask值为0027。umask值代表的是权限的“补码”,umask值和权限的换算方法请参见 “附录 > umask值含义” 。

文件权限 - 图3 说明:
openEuler默认已设置守护进程的umask值为0022。

实现

在配置文件/etc/sysconfig/init中新增一行:umask 0027。

为全局可写目录添加粘滞位属性

说明

任意用户可以删除、修改全局可写目录中的文件和目录,为了确保全局可写目录中的文件和目录不会被任意删除,需要为全局可写目录添加粘滞位属性。

实现

  1. 搜索全局可写目录。

    1. find / -type d -perm -0002 ! -perm -1000 -ls | grep -v proc
  2. 为全局可写目录添加粘滞位属性。dirname 为实际查找到的目录名。

    1. chmod +t dirname

删除非授权文件的全局可写属性

说明

全局可写文件可被系统中的任意用户修改,影响系统完整性。

实现

  1. 列举系统中所有的全局可写文件。

    1. find / -type d ( -perm -o+w ) | grep -v proc
    2. find / -type f ( -perm -o+w ) | grep -v proc
  2. 查看步骤1列举的所有文件(粘滞位位的文件和目录可以排除在外),删除文件或去掉其全局可写权限。使用以下命令去掉权限,其中filename为对应文件名:

    1. chmod o-w filename

    文件权限 - 图4 说明:
    可通过如下命令确定对应文件或目录是否设置了粘滞位,若回显中包含T标记,则为粘滞位文件或目录。命令中的filename为需要查询文件或目录的名称。

    1. ls -l filename

限制at命令的使用权限

说明

at命令用于创建在指定时间自动执行的任务。为避免任意用户通过at命令安排工作,造成系统易受攻击,需要指定可使用该命令的用户。

实现

  1. 删除/etc/at.deny文件。

    1. rm -f /etc/at.deny
  2. 将/etc/at.allow的文件属主改为root:root。

    1. chown root:root /etc/at.allow
  3. 控制/etc/at.allow的文件权限,仅root可操作。

    1. chmod og-rwx /etc/at.allow

限制cron命令的使用权限

说明

cron命令用于创建例行性任务。为避免任意用户通过cron命令安排工作,造成系统易受攻击,需要指定可使用该命令的用户。

实现

  1. 删除/etc/cron.deny文件。

    1. rm -f /etc/cron.deny
  2. 将/etc/cron.allow的文件属主改为root:root。

    1. chown root:root /etc/cron.allow
  3. 控制/etc/cron.allow的文件权限,仅root可操作。

    1. chmod og-rwx /etc/cron.allow

限制sudo命令的使用权限

说明

sudo命令用于普通用户以root权限执行命令。为了增强系统安全性,有必要对sudo命令的使用权进行控制,只允许root使用sudo命令,限制其他帐户使用。openEuler默认未限制非root用户使用sudo命令的权限。

实现

sudo命令的使用控制通过修改/etc/sudoers文件实现,需要注释掉如下配置行:

  1. #%wheel ALL=(ALL) ALL