LINUX下FTP用户和apache用户权限问题的解析
发布时间:2012-10-15 14:43:56 作者:佚名
我要评论
本文带你分析一下LINUX下FTP用户和apache用户权限问题
原来完全没有研究过LINUX系统,由于论坛空间的需要,购买的国外的VPS,装的LINUX系统。刚得到后台帐号时完全就晕菜了,什么都是空白的,没有系统,没有HTTP服务器,就是一个全裸的“网络硬盘”。还好有百度大叔在,让我可以“水中捞月”一翻,不查不知道,原来这些国外VPS的使用资料也少得可怜。。。好不容易学会了SSH,并且费了一番周折,终于装上了kloxo面板。这下总算好了,有HTTP了,FTP也有了。。。传好资料后居然发现权限的问题很严重,“用户名”、“用户组”还有什么“所有者”,要用chown命令来改“所有者”,差点搞晕了。。总算让论坛运行起来了,没有过多久,问题又来了。不知道怎么回事,FTP的文件显示不了了,在kloxo面板修改,死活显示不了,有时还登录不了。。。百度大叔那边也没有查到什么可用资料,估计就我一个碰到这种问题吧!关于FTP权限问题,我仔细的想了很久,估计就是出现在FTP用户的权限以及目录的所有者权限出现问题了。kloxo面板里的FTP用户管理功能太简单了,而且怎么改都没有用,我只好查相关的命令了。黄天不负有心人啦,终于让我找到了命令方式的管理FTP用户:sudo useradd -g apache -d /dev/null -s /bin/false ftpadmin先创建一个ftpadmin的用户,隶属于apache用户组结果出现下面的内容:Creating mailbox file: File exists
useradd: warning: the home directory already exists.Not copying any file from skel directory into it.
估计是以前有创建过同样的文件吧,不管它,再来下面的代码:sudo pure-pw useradd admin -u ftpadmin -d /home/admin/XXX.com
这是在pure-ftpd程序中建立一个FTP用户admin 并绑定到刚才建立的系统用户ftpadmin,这个FTP用户的主目录是/home/admin/XXX.com执行每条命令之后pure-pw会要求输入账号的密码。连续输入2遍密码后FTP帐号就生成了。接着,每次修改用户设置后都要更新一下虚拟用户数据库,不需要重新启动服务,运行下行命令:
sudo pure-pw mkdb
最后,再将网站根目录的所有者改成ftpadmin,不然FTP上传不了文件。chown -R ftpadmin /home/admin/XXX.com
------------
当我们使用PHP程序的时候,在安装好以后,如果你想删除整个目录,你会发现apache用户生成了一些文件,ftp的用户不能删除.
其实这是有办法解决的。
方法1.用户组控制方法
先给所有的虚拟主机主机中的虚拟用户(ftp用户)加入到apache这个组.然后设置umask为002.这样用户和组都有读写执行权限。这个是比较容易的方法.但不安全。不同的用户可以删除对方的文件,因为是同一个组,组有读写执行的权限.
方法2.使用linux高级的权限管理acl。
对一个目录设置二重权限,除了用户本身的用户组,在加入apache对他要读写执行的权限.
这样用户就能删除apache生成的文件.但为别人的组,别的虚拟用户他没法删除.
下面我们就来看看第二种的控制方法
linux系统里面,并不是只能为所有者,同组用户和其他用户这三类人分配一个文件(目录)的权限,你还可以指定其他的用户或者组,不过有个前提,挂载分区的时候加上acl选项,比如:
mount /dev/hda1 /home -o acl。
然后你可以使用
setfacl -m u:ftp:rwx /home/ftp/www
命令来给ftp用户分配/home/ftp/www目录的所有权限
如果你要/home/ftp/www/下面新建的目录和文件也有同样的权限
setfacl -d -m u:ftp:rwx /home/ftp/www
设置默认的权限,这个命令还可以实现多个用户的不同权限的控制,比如
setfacl -m u:ftp:rwx /home/www;
setfacl -m u:tmp:r-x /home/www;
ftp用户拥有所有权限,tmp用户拥有只读权限。
你还可以设置mask的值:
setfacl -m m::rwx /home/www;
这样,新建的你就可以让虚拟主机的用户和apache用户都有权限操作文件和目录了,比如apache用户的用户名是apache,虚拟主机的用户名是vmuser,目录是/home/vmuser/www,可以使用以下的命令:
setfacl -m u:vmuser:rwx /home/vmuser/www;
setfacl -m u:apache:rwx /home/vmuser/www;
setfacl -d -m u:vmuser:rwx /home/vmuser/www;
setfacl -d -m u:apache:rwx /home/vmuser/www;
setfacl -m m::rwx /home/vmuser/www;
setfacl -d -m m::rwx /home/vmuser/www;
这样,在安装PHP程序的时候,就不会提示你apache的用户没有权限写文件,而你想删除一个目录的时候,也不会因为下面有apache用户生成的文件而不能删除了。当然这个办法有点局限就是基本上只有ext2和ext3分区格式能用,其他的,比如xfs,jfs等不能直接使用,修改后才能使用。
useradd: warning: the home directory already exists.Not copying any file from skel directory into it.
估计是以前有创建过同样的文件吧,不管它,再来下面的代码:sudo pure-pw useradd admin -u ftpadmin -d /home/admin/XXX.com
这是在pure-ftpd程序中建立一个FTP用户admin 并绑定到刚才建立的系统用户ftpadmin,这个FTP用户的主目录是/home/admin/XXX.com执行每条命令之后pure-pw会要求输入账号的密码。连续输入2遍密码后FTP帐号就生成了。接着,每次修改用户设置后都要更新一下虚拟用户数据库,不需要重新启动服务,运行下行命令:
sudo pure-pw mkdb
最后,再将网站根目录的所有者改成ftpadmin,不然FTP上传不了文件。chown -R ftpadmin /home/admin/XXX.com
------------
当我们使用PHP程序的时候,在安装好以后,如果你想删除整个目录,你会发现apache用户生成了一些文件,ftp的用户不能删除.
其实这是有办法解决的。
方法1.用户组控制方法
先给所有的虚拟主机主机中的虚拟用户(ftp用户)加入到apache这个组.然后设置umask为002.这样用户和组都有读写执行权限。这个是比较容易的方法.但不安全。不同的用户可以删除对方的文件,因为是同一个组,组有读写执行的权限.
方法2.使用linux高级的权限管理acl。
对一个目录设置二重权限,除了用户本身的用户组,在加入apache对他要读写执行的权限.
这样用户就能删除apache生成的文件.但为别人的组,别的虚拟用户他没法删除.
下面我们就来看看第二种的控制方法
linux系统里面,并不是只能为所有者,同组用户和其他用户这三类人分配一个文件(目录)的权限,你还可以指定其他的用户或者组,不过有个前提,挂载分区的时候加上acl选项,比如:
mount /dev/hda1 /home -o acl。
然后你可以使用
setfacl -m u:ftp:rwx /home/ftp/www
命令来给ftp用户分配/home/ftp/www目录的所有权限
如果你要/home/ftp/www/下面新建的目录和文件也有同样的权限
setfacl -d -m u:ftp:rwx /home/ftp/www
设置默认的权限,这个命令还可以实现多个用户的不同权限的控制,比如
setfacl -m u:ftp:rwx /home/www;
setfacl -m u:tmp:r-x /home/www;
ftp用户拥有所有权限,tmp用户拥有只读权限。
你还可以设置mask的值:
setfacl -m m::rwx /home/www;
这样,新建的你就可以让虚拟主机的用户和apache用户都有权限操作文件和目录了,比如apache用户的用户名是apache,虚拟主机的用户名是vmuser,目录是/home/vmuser/www,可以使用以下的命令:
setfacl -m u:vmuser:rwx /home/vmuser/www;
setfacl -m u:apache:rwx /home/vmuser/www;
setfacl -d -m u:vmuser:rwx /home/vmuser/www;
setfacl -d -m u:apache:rwx /home/vmuser/www;
setfacl -m m::rwx /home/vmuser/www;
setfacl -d -m m::rwx /home/vmuser/www;
这样,在安装PHP程序的时候,就不会提示你apache的用户没有权限写文件,而你想删除一个目录的时候,也不会因为下面有apache用户生成的文件而不能删除了。当然这个办法有点局限就是基本上只有ext2和ext3分区格式能用,其他的,比如xfs,jfs等不能直接使用,修改后才能使用。
相关文章

Fedora Linux 42 稳定版发布: 带来大量新功能和软件更新
Fedora 42昨日发布,这是 Red Hat 赞助开发的杰出前沿 Linux 发行版的最新版,包含大量新功能和软件更新,使其成为 2025 年上半年发布的一款出色的 Linux 操作系统之一,内2025-04-16
如何在Linux查看硬盘信息? 查看Linux硬盘大小类型和硬件信息的5种方法
使用Linux系统的过程中,查看和了解硬盘信息是非常重要的工作,尤其是对于系统管理员而言,那么在Linux系统中如何查看硬盘信息?以下是具体内容介绍2025-03-12
如何在 Linux 中查看 CPU 详细信息? 3招轻松查看CPU型号、核心数和温度
在日常运维工作中,获取 CPU 信息是系统运维管理员常见的工作内容,无论是为了性能调优、硬件升级还是仅仅满足好奇心2025-03-11
什么是 Arch Linux? 独树一帜的Arch Linux发行版分析
Arch Linux是为简化,优化,现代化,实用主义,用户中心和多功能性而创建Linux发行版,究竟是什么让 Arch 与众不同?下面我们就来简要解读2025-02-19
一直用的linux办公,想要将笔记本电脑从 Linux 系统切换回 Windows 11,我们可以制作一个win11装机u盘,详细如下2025-02-17
Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南
Rsnapshot 不仅可以备份本地文件,还能通过 SSH 备份远程文件,接下来详细介绍如何安装、配置和使用 Rsnapshot,包括创建每小时、每天、每周和每月的本地备份,以及如何进2025-02-06
Linux Kernel 6.13发布:附更新内容及新特性解读
Linux 内核 6.13 正式发布,新版本引入了惰性抢占支持,简化内核抢占逻辑,通过减少与调度器相关的调用次数,让内核在运行时表现更优,从而提高效率2025-01-23
五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布
今日,深度操作系统正式推出deepin 25 Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系统2025-01-18
Linux Mint Xia 22.1重磅发布: 重要更新一览
Beta 版 Linux Mint“Xia” 22.1 发布,新版本基于 Ubuntu 24.04,内核版本为 Linux 6.8,这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面操作系统领域的2025-01-16
LinuxMint怎么安装? Linux Mint22下载安装图文教程
Linux Mint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南2025-01-16









最新评论