LINUX下FTP用戶和apache用戶權限問題的解析
發(fā)布時間:2012-10-15 14:43:56 作者:佚名
我要評論
本文帶你分析一下LINUX下FTP用戶和apache用戶權限問題
原來完全沒有研究過LINUX系統(tǒng),由于論壇空間的需要,購買的國外的VPS,裝的LINUX系統(tǒng)。剛得到后臺帳號時完全就暈菜了,什么都是空白的,沒有系統(tǒng),沒有HTTP服務器,就是一個全裸的“網絡硬盤”。還好有百度大叔在,讓我可以“水中撈月”一翻,不查不知道,原來這些國外VPS的使用資料也少得可憐。。。好不容易學會了SSH,并且費了一番周折,終于裝上了kloxo面板。這下總算好了,有HTTP了,F(xiàn)TP也有了。。。傳好資料后居然發(fā)現(xiàn)權限的問題很嚴重,“用戶名”、“用戶組”還有什么“所有者”,要用chown命令來改“所有者”,差點搞暈了。。總算讓論壇運行起來了,沒有過多久,問題又來了。不知道怎么回事,F(xiàn)TP的文件顯示不了了,在kloxo面板修改,死活顯示不了,有時還登錄不了。。。百度大叔那邊也沒有查到什么可用資料,估計就我一個碰到這種問題吧!關于FTP權限問題,我仔細的想了很久,估計就是出現(xiàn)在FTP用戶的權限以及目錄的所有者權限出現(xiàn)問題了。kloxo面板里的FTP用戶管理功能太簡單了,而且怎么改都沒有用,我只好查相關的命令了。黃天不負有心人啦,終于讓我找到了命令方式的管理FTP用戶:sudo useradd -g apache -d /dev/null -s /bin/false ftpadmin先創(chuàng)建一個ftpadmin的用戶,隸屬于apache用戶組結果出現(xiàn)下面的內容:Creating mailbox file: File exists
useradd: warning: the home directory already exists.Not copying any file from skel directory into it.
估計是以前有創(chuàng)建過同樣的文件吧,不管它,再來下面的代碼:sudo pure-pw useradd admin -u ftpadmin -d /home/admin/XXX.com
這是在pure-ftpd程序中建立一個FTP用戶admin 并綁定到剛才建立的系統(tǒng)用戶ftpadmin,這個FTP用戶的主目錄是/home/admin/XXX.com執(zhí)行每條命令之后pure-pw會要求輸入賬號的密碼。連續(xù)輸入2遍密碼后FTP帳號就生成了。接著,每次修改用戶設置后都要更新一下虛擬用戶數(shù)據庫,不需要重新啟動服務,運行下行命令:
sudo pure-pw mkdb
最后,再將網站根目錄的所有者改成ftpadmin,不然FTP上傳不了文件。chown -R ftpadmin /home/admin/XXX.com
------------
當我們使用PHP程序的時候,在安裝好以后,如果你想刪除整個目錄,你會發(fā)現(xiàn)apache用戶生成了一些文件,ftp的用戶不能刪除.
其實這是有辦法解決的。
方法1.用戶組控制方法
先給所有的虛擬主機主機中的虛擬用戶(ftp用戶)加入到apache這個組.然后設置umask為002.這樣用戶和組都有讀寫執(zhí)行權限。這個是比較容易的方法.但不安全。不同的用戶可以刪除對方的文件,因為是同一個組,組有讀寫執(zhí)行的權限.
方法2.使用linux高級的權限管理acl。
對一個目錄設置二重權限,除了用戶本身的用戶組,在加入apache對他要讀寫執(zhí)行的權限.
這樣用戶就能刪除apache生成的文件.但為別人的組,別的虛擬用戶他沒法刪除.
下面我們就來看看第二種的控制方法
linux系統(tǒng)里面,并不是只能為所有者,同組用戶和其他用戶這三類人分配一個文件(目錄)的權限,你還可以指定其他的用戶或者組,不過有個前提,掛載分區(qū)的時候加上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
設置默認的權限,這個命令還可以實現(xiàn)多個用戶的不同權限的控制,比如
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分區(qū)格式能用,其他的,比如xfs,jfs等不能直接使用,修改后才能使用。
useradd: warning: the home directory already exists.Not copying any file from skel directory into it.
估計是以前有創(chuàng)建過同樣的文件吧,不管它,再來下面的代碼:sudo pure-pw useradd admin -u ftpadmin -d /home/admin/XXX.com
這是在pure-ftpd程序中建立一個FTP用戶admin 并綁定到剛才建立的系統(tǒng)用戶ftpadmin,這個FTP用戶的主目錄是/home/admin/XXX.com執(zhí)行每條命令之后pure-pw會要求輸入賬號的密碼。連續(xù)輸入2遍密碼后FTP帳號就生成了。接著,每次修改用戶設置后都要更新一下虛擬用戶數(shù)據庫,不需要重新啟動服務,運行下行命令:
sudo pure-pw mkdb
最后,再將網站根目錄的所有者改成ftpadmin,不然FTP上傳不了文件。chown -R ftpadmin /home/admin/XXX.com
------------
當我們使用PHP程序的時候,在安裝好以后,如果你想刪除整個目錄,你會發(fā)現(xiàn)apache用戶生成了一些文件,ftp的用戶不能刪除.
其實這是有辦法解決的。
方法1.用戶組控制方法
先給所有的虛擬主機主機中的虛擬用戶(ftp用戶)加入到apache這個組.然后設置umask為002.這樣用戶和組都有讀寫執(zhí)行權限。這個是比較容易的方法.但不安全。不同的用戶可以刪除對方的文件,因為是同一個組,組有讀寫執(zhí)行的權限.
方法2.使用linux高級的權限管理acl。
對一個目錄設置二重權限,除了用戶本身的用戶組,在加入apache對他要讀寫執(zhí)行的權限.
這樣用戶就能刪除apache生成的文件.但為別人的組,別的虛擬用戶他沒法刪除.
下面我們就來看看第二種的控制方法
linux系統(tǒng)里面,并不是只能為所有者,同組用戶和其他用戶這三類人分配一個文件(目錄)的權限,你還可以指定其他的用戶或者組,不過有個前提,掛載分區(qū)的時候加上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
設置默認的權限,這個命令還可以實現(xiàn)多個用戶的不同權限的控制,比如
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分區(qū)格式能用,其他的,比如xfs,jfs等不能直接使用,修改后才能使用。
相關文章

集成系統(tǒng)級Claw模式! Deepin 官宣發(fā)布 25.1 版本
deepin操作系統(tǒng)發(fā)布了最新的 25.1 版本更新,該版本基于 deepin 25 正式版積累的多輪內測成果,在 AI 能力、內核版本、桌面環(huán)境、文件管理器以及系統(tǒng)安全等方面進行了更新2026-04-13
又一代老硬件退場! Linux 內核正式放棄Intel 486 CPU
在過去的幾十年間,CPU 的架構已經經歷了飛速發(fā)展,x86 系列就是其中之一,而 i486 則屬于該系列中的一個,當前,i486 的CPU處理器已經夠老,從 Linux 7.1 開始將不再有對2026-04-09
我把 Linux 中最常用、最實用、最常被問到的命令按照實際使用場景分類整理,方便你快速查閱和記憶,內容覆蓋日常運維、開發(fā)調試、性能分析、文件處理、網絡、安全、系統(tǒng)管2026-04-08
一分鐘內檢查Linux服務器性能? 9個性能檢測常用的基本命令
今天我們來看看Linux系統(tǒng)中用于性能監(jiān)控的一系列命令,這些命令可以快速查看機器的負載情況,詳細請看下文介紹2026-03-18
從零基礎到精通! 適合高級用戶的15款Linux發(fā)行版推薦
Linux作為操作系統(tǒng)領域靈活性和可定制性的基石,提供了大量滿足不同用戶需求的發(fā)行版,今天分享適合高級用戶的15款Linux發(fā)行版2026-03-10
開箱即用? 這4個高手級Linux發(fā)行版遠沒你想象的那么安全易用
如果你正在糾結用哪個發(fā)行版?零基礎新手別被“高端”“極客”“聲明式”這些詞沖昏頭腦,先用好用的,再慢慢進階2026-03-10
這幾款SSH工具真的夠用了! Linux好用的ssh工具推薦
在Linux上使用SSH,您需要安裝一個SSH客戶端,今天整理找到的8 款 SSH / 終端工具,從免費開源到企業(yè)級商用,從輕量化命令行到一站式工具箱,每款都做了介紹與對比,希望能2026-03-09
在Linux系統(tǒng)下有兩種用戶,即高級用戶root,普通用戶,高級用戶root可以在系統(tǒng)中做任何事情,普通用戶僅可在Linux系統(tǒng)中做有限的事情,下面我們就來看看切換方法2026-02-28
揭秘當前登錄用戶的身份! Linux中使用logname命令的技巧
logname命令就是這樣一個簡單但強大的工具,它能幫助我們輕松獲取當前登錄用戶的用戶名,今天,我們就來深入探索一下這個命令的工作原理、使用方法和最佳實踐2026-02-26
在 Linux 系統(tǒng)中,DNS 緩存是一種將域名和 IP 地址映射關系緩存在本地的機制,可以加快域名解析速度,并減輕 DNS 服務器的負載2026-02-26



