天天看點

虛拟主機使用者ftp和apache使用者檔案互操作權限解決方法Linux下的XAMPP基本配置技巧(設定虛拟主機、添加FTP賬戶等)用Apache仿照FTP的清單方式的虛拟主機配置寫法

近來用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