近來用linux虛拟主機學習了一下linux下的權限比較進階一點的權限管理,當我們使用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等不能直接使用,修改後才能使用。
Linux下的XAMPP基本配置技巧(設定虛拟主機、添加FTP賬戶等)
xampp安裝好之後就隻有一個預設站點及一個預設nobody的ftp賬戶,這顯然不符合我們平時的需求了,那麼下面就來講一下如何設定并管理多個虛拟主機及ftp賬戶了,至于xampp的安裝不在此讨論範圍,讀者可自行參閱官網的相關說明。
1、首先講一下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上傳檔案時無法覆寫同名檔案的問題。
2、然後我們再講一下虛拟主機的配置
先執行:
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,為以後建立更多的虛拟主機如site2、site3……等等做準備。
用Apache仿照FTP的清單方式的虛拟主機配置寫法
<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伺服器
一、配置防火牆,開啟FTP伺服器需要的端口
CentOS 7.0預設使用的是firewall作為防火牆,這裡改為iptables防火牆。
1、關閉firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
2、安裝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原創内容©版權所有,轉載請注明出處及原文連結
二、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #儲存退出
setenforce 0 #使配置立即生效
三、安裝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開機啟動
四、配置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
五、建立虛拟使用者名單檔案
touch /etc/vsftpd/virtusers
編輯虛拟使用者名單檔案:(第一行賬号,第二行密碼,注意:不能使用root做使用者名,系統保留)
vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
:wq! #儲存退出
六、生成虛拟使用者資料檔案
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db #設定PAM驗證檔案,并指定對虛拟使用者資料庫檔案進行讀取
七、在/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,否則配置失敗
八、建立系統使用者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,需要這樣設定。
九、建立虛拟使用者個人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
十、最後重新開機vsftpd伺服器
systemctl restart vsftpd.service
備注:
guest_username=vsftpd #指定虛拟使用者的宿主使用者(就是我們前面建立的使用者)
guest_username=www #如果ftp目錄是指向網站根目錄,用來上傳網站程式,可以指定虛拟使用者的宿主使用者為nginx運作賬戶www,可以避免很多權限設定問題
至此,CentOS 7.0安裝配置Vsftp伺服器配置完成。
版權聲明:本文為CSDN部落客「weixin_34363171」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34363171/article/details/91924834