近來用linux虛擬主機學習了一下linux下的權限比較高級一點的權限管理,當咱們使用PHP程序的時候,在安裝好之後,若是你想刪除整個目錄,你會發現apache用戶生成了一些文件,ftp的用戶不能刪除.css
其實這是有辦法解決的。html
方法1.用戶組控制方法
先給全部的虛擬主機主機中的虛擬用戶(ftp用戶)加入到apache這個組.而後設置umask爲002.這樣用戶和組都有讀寫執行權限。這個是比較容易的方法.但不安全。不一樣的用戶能夠刪除對方的文件,由於是同一個組,組有讀寫執行的權限.linux
方法2.使用linux高級的權限管理acl。nginx
對一個目錄設置二重權限,除了用戶自己的用戶組,在加入apache對他要讀寫執行的權限.
這樣用戶就能刪除apache生成的文件.但爲別人的組,別的虛擬用戶他無法刪除.web
下面咱們就來看看第二種的控制方法shell
linux系統裏面,並非只能爲全部者,同組用戶和其餘用戶這三類人分配一個文件(目錄)的權限,你還能夠指定其餘的用戶或者組,不過有個前提,掛載分區的時候加上acl選項,好比:
mount /dev/hda1 /home -o acl。數據庫
而後你可使用
setfacl -m u:ftp:rwx /home/ftp/www
命令來給ftp用戶分配/home/ftp/www目錄的全部權限apache
若是你要/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等不能直接使用,修改後才能使用。
xampp安裝好以後就只有一個默認站點及一個默認nobody的ftp帳戶,這顯然不符合咱們平時的需求了,那麼下面就來說一下如何設置並管理多個虛擬主機及ftp帳戶了,至於xampp的安裝不在此討論範圍,讀者可自行參閱官網的相關說明。
一、首先講一下ftp帳戶的配置:
xampp採用的是proftpd服務端,這個不像咱們Win環境下經常使用的Serv-U,用戶賬戶不是在服務端工具裏面進行配置,而是在linux系統賬戶裏面配置的。所以咱們可使用命令:
groupadd ftpusers
先在系統中建立一個名稱爲ftpusers的用戶組,這裏的名稱能夠隨便設置,主要是爲了區分ftp賬戶與系統其餘類型的賬戶因此我這裏就命名爲ftpusers,而後在這個組裏面添加一個用戶:
useradd -d /opt/lampp/www/site1 -g ftpusers -s /sbin/nologin site1ftp
第一個參數-d表示用戶home目錄,其中/opt/lampp/www/這個路徑必須是存在的,而site1則是在該命令執行時自動建立的。第二 個參數-g表示此用戶隸屬於哪一個用戶組,第三個參數-s表示此用戶的shell環境,爲安全起見咱們應該設置爲一個無權限的路徑。最後一個參數纔是此賬戶 的登陸名稱,我這裏是site1ftp。
建立好以後咱們就要爲該賬戶設置一個密碼了:
passwd site1ftp
執行該命令後按提示輸入兩次密碼便可完成賬戶site1ftp的密碼設置了。
接下來咱們設置一下賬戶home目錄的權限:
chmod -R 777 /opt/lampp/www/site1
至此,ftp賬戶的添加算是完成了,順便提示一下,刪除賬戶的命令是userdel,修改賬戶的命令是usermod,存儲賬戶的文件路徑爲/etc/passwd。
另外,爲安全起見,咱們應該在proftpd的服務配置文件(通常路徑是/opt/lampp/etc/proftpd.conf)中修改一下 DefaultRoot爲ftpusers,將ftpusers組裏面的用戶訪問範圍限制在其home目錄。也能夠把DefaultRoot設爲~(鍵盤 左上角的那個符號),這樣表示全部的組裏面的用戶都有這個限制了。若是要單獨設置兩個組或更多的組你必須另起一行或多行,說明以下:
DefaultRoot ftpusers #限制ftpusers組裏面的用戶
DefaultRoot ~ #限制全部組裏面的用戶
DefaultRoot ftpusers DefaultRoot nobody #限制ftpusers組及nobody組裏面的用戶
DefaultRoot ftpusers,nobody #限制既隸屬於ftpusers組同時也隸屬於nobody組裏面的用戶
對了,還差一個步驟,應該在proftpd配置文件中對ftp目錄添加可重寫的權限,以下:
<Directory /opt/lampp/www/*> AllowOverwrite on </Directory>
不然會出現ftp上傳文件時沒法覆蓋同名文件的問題。
二、而後咱們再講一下虛擬主機的配置
先執行:
cat /opt/lampp/etc/httpd.conf
查看一下xampp的apache配置文件,咱們發現其中有一行:
#Include etc/extra/httpd-vhosts.conf
看來,xampp爲咱們準備了一個專用於配置虛擬主機的文件了,去掉#號以刪除其註釋,而後編輯/opt/lampp/etc/extra /httpd-vhosts.conf文件,此文件中xampp爲咱們建立了兩個虛擬主機的示例,咱們把這兩個示例註釋掉,而後添加咱們本身須要的虛擬主 機,例如:
<VirtualHost *:80> DocumentRoot /opt/lampp/www/site1 ServerName blog.ewebe.net </VirtualHost>
DocumentRoot表示虛擬主機對應的路徑,即網站目錄,ServerName表示虛擬主機的訪問地址,相似IIS中的主機頭值。
至此,虛擬主機的設置也算是完成了。
最後咱們須要在apache配置文件/opt/lampp/etc/httpd.conf中添加一下網站目錄的訪問權限。
<Directory "/opt/lampp/www/site1"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
這裏能夠將目錄路徑/opt/lampp/www/site1改成/opt/lampp/www,爲之後創建更多的虛擬主機如site二、site3……等等作準備。
<Virtualhost *:80>
DocumentRoot 「/home/123456″
ServerName ftp.aaa.com
AddDefaultCharset UTF-8
<directory home=」」/home/123456″」>
Options Indexes
IndexOptions NameWidth=* //這個是讓表格字段名自動適應寬度
IndexOptions FancyIndexing //採用相似Windows的排列方式
IndexOptions FoldersFirst //文件夾排在文件前面
IndexOptions HTMLTable //採用HTML的表格方式
AddIcon (IMG,/icons/pdf.gif) .pdf
AddIcon (IMG,/icons/doc.gif) .doc
AddIcon (IMG,/icons/xls.gif) .xls
AddIcon (IMG,/icons/ppt.gif) .ppt
AddIcon (IMG,/icons/rar.gif) .rar .zip .tgz .tar.gz .rpm .iso
AddIcon (IMG,/icons/msi.gif) .msi .exe
AddIcon (IMG,/icons/txt.gif) .txt
AddIcon (IMG,/icons/dll.gif) .dll .sys
AddIcon (IMG,/icons/xml.gif) .xml
AddIcon (IMG,/icons/html.gif) .htm .html
AddIcon (IMG,/icons/media.gif) .wmv .rm .rmvb .asf .mov
AddIcon (IMG,/icons/img.gif) .jpg .gif .png .bmp
IndexStyleSheet 「ftp.css」 //指定CSS文件,對樣式進行具體規定
AllowOverride None
Order allow,deny
Allow from all
</directory>
</Virtualhost>
CentOS 7.0安裝配置Vsftp服務器
1、配置防火牆,開啓FTP服務器須要的端口
CentOS 7.0默認使用的是firewall做爲防火牆,這裏改成iptables防火牆。
一、關閉firewall:
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
二、安裝iptables防火牆
yum install iptables-services #安裝
vi /etc/sysconfig/iptables #編輯防火牆配置文件
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
systemctl restart iptables.service #最後重啓防火牆使配置生效
systemctl enable iptables.service #設置防火牆開機啓動
說明:21端口是ftp服務端口;10060到10090是Vsftpd被動模式須要的端口,可自定義一段大於1024的tcp端口。
系統運維 www.osyunwei.com 舒適提醒:qihang01原創內容©版權全部,轉載請註明出處及原文連接
2、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉
SELINUX=disabled #增長
:wq! #保存退出
setenforce 0 #使配置當即生效
3、安裝vsftpd
yum install -y vsftpd #安裝vsftpd
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI #安裝vsftpd虛擬用戶配置依賴包
systemctl start vsftpd.service #啓動
systemctl enable vsftpd.service #設置vsftpd開機啓動
4、配置vsftp服務器
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak #備份默認配置文件
執行如下命令進行設置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300
\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd
\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES
\npasv_min_port=10060\npasv_max_port=10090
\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
5、創建虛擬用戶名單文件
touch /etc/vsftpd/virtusers
編輯虛擬用戶名單文件:(第一行帳號,第二行密碼,注意:不能使用root作用戶名,系統保留)
vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
:wq! #保存退出
6、生成虛擬用戶數據文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db #設定PAM驗證文件,並指定對虛擬用戶數據庫文件進行讀取
7、在/etc/pam.d/vsftpd的文件頭部加入如下信息(在後面加入無效)
修改前先備份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注意:若是系統爲32位,上面改成lib,不然配置失敗
8、新建系統用戶vsftpd,用戶目錄爲/home/wwwroot, 用戶登陸終端設爲/bin/false(即便之不能登陸系統)
useradd vsftpd -d /home/wwwroot -s /bin/false
chown vsftpd:vsftpd /home/wwwroot -R
chown www:www /home/wwwroot -R #若是虛擬用戶的宿主用戶爲www,須要這樣設置。
9、創建虛擬用戶我的Vsftp的配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1 web2 web3 #這裏建立三個虛擬用戶配置文件
mkdir -p /home/wwwroot/web1/http/
vi web1 #編輯用戶web1配置文件,其餘的跟這個配置文件相似
local_root=/home/wwwroot/web1/http/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
10、最後重啓vsftpd服務器
systemctl restart vsftpd.service
備註:
guest_username=vsftpd #指定虛擬用戶的宿主用戶(就是咱們前面新建的用戶)
guest_username=www #若是ftp目錄是指向網站根目錄,用來上傳網站程序,能夠指定虛擬用戶的宿主用戶爲nginx運行帳戶www,能夠避免不少權限設置問題
至此,CentOS 7.0安裝配置Vsftp服務器配置完成。