虛擬主機用戶ftp和apache用戶文件互操做權限解決方法

近來用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等不能直接使用,修改後才能使用。



Linux下的XAMPP基本配置技巧(設置虛擬主機、添加FTP帳戶等)

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……等等作準備。



用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服務器

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服務器配置完成。

相關文章
相關標籤/搜索