linux创建777权限的文件,Linux文件夹权限777,无法创建文件

问题描述

在linux系统中,使用mysql导出csv文件,默认文件夹是/tmp目录,可以导出成功,然后我在/tmp/下面创建了一个lx目录,并将/tmp/lx的权限设置为777,也就是/tmp与/tmp/lx的权限都是777,再将mysql数据导出到lx目录,报错:

ERROR 1 (HY000) at line 16 in file: './export.sql': Can't create/write to file '/tmp/lx/t_User.csv' (Errcode: 13 - Permission denied)

解决方法

我作为一个linux的菜鸟,完全无法理解这种现象,只能google、百度各种找资料,最后终于有人提到估计是SELinux的原因。于是继续找资料,在此摘录几条我认为比较重要的:

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

对访问的控制彻底化MAC(Mandatory Access Control)

对于所有的文件,目录,端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、一般用户是没有权限更改的。

TE (Type Enforcement)– 对于进程只赋予最小的权限

Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里定好的。

domain迁移 –防止权限升级

对于用户只赋予最小的权限

反正SELinux听起来是很高大上的,但是作为一个Linux菜鸟,不打算从更改权限入手解决问题,而打算使用更直接的方法:关闭 SELinux服务,对,就是关闭。

关闭SELinux的方法:

1. 临时关闭: 使用命令setenforce 0

2. 永久关闭: 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

使用setenforce 0关闭后,再试了一下上面失败的mysql导出文件,果然没问题。

你可能感兴趣的:(linux创建777权限的文件)