linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng
linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,acl是一个好东西,有了它可以很完美且优雅的控制目录权限。acl的基础知识,这里不再详述,有兴趣可以参看此文(通过实践学习linux ACL基本用法/Linux ACL 体验) 一个很可能遇到的实际问题: linux下的web站点,该站点开启ftp上传下载;web与ftp以不同的用户运行,分别是web, ftp. 该目录 ./html 结构大致如下 (shell当前目录为/var/www/html, 下同) $ls
drwxr-xr-x root root .0K May : admin
drwxr-xr-x root root .0K May : image
drwxr-xr-x root root .0K May : lib
drwxrwxrwx root root .0K May : upload
-rw-r–r– root root May : index.php
-rw-r–r– root root May : config.inc.php 为了web的安全其见,其中 upload目录为web后台上传文件的目录,权限为777;其它文件(目录)权限755(这里使用555也是可以的) 这样web是安全了,但问题也来了 ftp用户就没有写入权限了,将无法通过ftp修改web程序。 如果能实现以下这样的功能就好了: web用户还是以上权限,不多赋权;但ftp用户可以对这里的所有目录、子目录(及其中文件)都有完全的权限 这种情况下,就要派acl上场了。 对于web用户的权限,保持不变。而针对ftp用户设置几条acl规则: setfacl -R -m u:ftp:rwx . 大意是,对当前目录 . 递归设置acl规则 u:ftp:rwx ,
u:ftp:rwx这条规则是针对指定用户设定的(u);该用户名为ftp; 权限规则是rwx 翻译成人类语言就是说:给当前目录及其子目录、文件设置acl规则,让用户ftp拥有完全权限。 太简单了,这样就完成搞定了! 差不多了,不过这里还有一个问题,对于以后新建的目录里,ftp用户可能并没有rwx权限,这是为什么呢?因为对于新建目录,它并没有相应的acl规则,而是沿用022的默认umask, 结果就是新文件的755权限。 这里就要用默认acl来实现,简单说来,就是让新建的目录,都自动继承一个默认的acl规则,让ftp用户拥有rwx权限。 setfacl -R -d –set u:ftp:rwx . 还是一条设置acl的命令(setacl); -R 是递归执行,这很简单。重点在 -d –set u:ftp:rwx 上。 -d,指后面是一条default acl规则,规则是 –set u:ftp:rwx, 对当前目录 . 设置规则 用人类的语言讲,就是让所有新建目录都对ftp用户设置rwx的默认权限。 就这样,设置完了。相当简单吧? 回过头来,再看看上面对upload目录设置777的权限,似乎也不并不怎么完美,是不是也可能通过acl规则让web用户拥有rwx的权限?当然可以,其实更好,因为这里的文件是web用户自己创建的,里面的文件所有者应该是web用户,777权限似乎高了点;而且如果这是从其它服务器上迁移过来的站点的话,这些文件的所有者可能还会比较乱。 另外,默认acl,只对以后的新建目录有效,而对已有文件,它并不改变其acl,所以,要同时使用上面所述的两个命令,对已有文件(setfacl -R -m u:ftp:rwx .)和以后的新建目录(setfacl -R -d –set u:ftp:rwx .)设置acl. 上面的acl是针对一个用户web设定的,还可以对一个用户组来设置 g:group_name:rwx , 这样对多用户协作状态下会比较有用。
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)的更多相关文章
- PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 && Linux下的ZipArchive配置开启压缩 &&搞个鸡巴毛,写少了个‘/’号,浪费了一天
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有 ...
- Linux下安装和配置JDK与Tomcat(升级版)
在这个版本 Linux下安装和配置JDK与Tomcat(入门版) 的基础上优化升级 1.下载相关软件 apache-tomcat-6.0.37.tar.gz jdk-6u25-linux-i586-r ...
- [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.
为了更好的排版, 所以将IK分词器的安装重启了一篇博文, 大家可以接上solr的安装一同查看.[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://ww ...
- Linux下Redis服务器安装配置
说明:操作系统:CentOS1.安装编译工具yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel ...
- Linux下SVN服务器安装配置及客户端安装说明
原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_ ...
- linux下golang的配置
linux下golang的配置 之前开发golang一直在windows下,今天在linux下试了一下 ,遇到一些梗,比如go 找不到 sync包.花了一小时全部解决,把过程记录一下. 安装 go 我 ...
- 转载-Linux下svn搭建配置流程
Linux下svn搭建配置流程 一. 源文件编译安装.源文件共两个,为: 1. 下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...
- Linux下安装与配置Nginx
一.准备 Nginx版本:nginx-1.7.7.tar.gz 请自行到官网下载对应的版本. 二.步骤 ♦在Linux新建一个queenLove用户 [root@localhost /]# use ...
- Linux(4)- centos7安装python3、Linux下安装、配置virtualenv、确保开发环境的一致性、虚拟环境之virtualenvwrapper、vim
一.centos7安装python3 1.下载python3的源码包 下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz cd ...
随机推荐
- Linq的一些记录
1. IQueryable接口与IEnumberable接口的区别: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了, ...
- 5.html5中的路径表示
路径在html中的作用主要是进行外部资源的引入,如css文件,js文件,媒体文件等. 而路径本身有分为相对路径和绝对路径.所谓相对路径,就是相对于链接页面而言的另一个页面的路径.而绝对路径,就是直接从 ...
- 自学Python一 迷茫中的开端!
有心学习一下Python,多门技术多条路啊.经历了找教程,看代码,写demo,这东西入门容易精通难啊!又因为请了两周婚假彻底忘光光.想了想自己还是边复习边写点什么东西吧.很多技术,新东西都是看了n多, ...
- 观察者模式学习--使用jdk的工具类简单实现
观察者模式学习之二:使用jdk的自带的工具类实现,与自己实现相比,两者有以下的区别: 1,自己实现,需要定义观察者的接口类和目标对象的接口类.使用java util的工具类,则不需要自己定义观察者和目 ...
- 基于swift语言iOS8的蓝牙连接(初步)
看过一些蓝牙App的事例,大体上对蓝牙的连接过程进行了了解.但是开始真正自己写一个小的BLE程序的时候就举步维艰了.那些模棱两可的概念在头脑中瞬间就蒸发了,所以还是决定从最基本的蓝牙连接过程进行.这里 ...
- js 获取字符串中最后一个斜杠后面的内容
var str = "/asdasf/asfaewf/agaegr/trer/rhh"; var index = str .lastIndexOf("\/"); ...
- MYSQL procedure
没怎么接触过mysql procedure,今天建个calendar表还磨磨唧唧的,记录一下: CREATE PROCEDURE `new_procedure` (start_date DATA,en ...
- 48.Warning: (vsim-3534) [FOFIR] - Failed to open file "sp_rom_8x256_sr.mif" for reading.
当在仿真ROM IP核文件时,会出现这种警告,而这种警告的结果是ROM不能输出数据,原因是mif文件要放在modelsim工程文件目录下.类似的,有时候会报错,Failed to open file& ...
- 如何查看系统内置的shell命令及帮助信息
1.打开终端,输入help命令可以查看系统默认的shell(通常是bash)的内置的shell命令列表: [tansheng@localhost ~]$ help GNU bash, version ...
- 浅谈ERP系统实施后如何完善企业内部控制制度建设
ERP与企业内部控制制度,前者提升企业的管理水平,后者为企业发展保驾护航,两项工作都是企业各项工作的重中之重. ERP是企业资源规划Enterprise Resource Planning的缩写.企业 ...