請問ftp存取/var/www/html的權限問題 - Linux

Table of Contents

大家好

想請問一個 ftp 不能存取 /var/www/html 資料夾內容的問題原因,
以及合適的權限設定建議。

我想在以 apache httpd 提供服務的 centos 7 (3.10.0-957.5.1.el7.x86_64 #1 SMP)
上面架設 Wordpress 網站。

因為我在 Windows 架設 wordpress 時,知道管理者若要 Wordpress 系統代為
下載與安裝擴充套件,那就要提供一個 FTP 帳號給 Wordpress 系統上傳擴充套件
到網站的套件資料夾,所以就參考下面的文章架設了 vsftpd。


http://prolinuxhub.com/configure-ftp-access-on-centos-7-and-grant-
user-access-to-website/

網址很長,因此縮在下面
https://goo.gl/kGjY7S

以下是我有調整到的 vsftp 設定
anonymous_enable=NO
local_enable=YES
write_enable=YES

但是在了解 chroot 和 vsftp 的機制後,還是讓 chroot_local_user 維持 NO

接著為了給 wordpress 的 ftp 帳號存取到 /var/www/html 的內容,我照上面文章的參
考做法,建立了 wordpress 專用的 ftp 帳號以及使用者,
然後也建立了專用的群組 ftp-access-group,並且把 /var/www/html 的群組變更為
ftp-access-group,最後再調整 /var/www 的權限並開放 SGID。

[使用者名稱@centos-7 home]$ sudo ls -al /var/www
total 0
drwxrwsr-x. 4 root root 33 Feb 20 05:44 .
drwxr-xr-x. 20 root root 276 Feb 20 05:47 ..
drwxr-sr-x. 2 root root 6 Nov 5 01:47 cgi-bin
drwxrwsr-x. 2 root ftp-access-group 24 Feb 20 05:47 html

現在遇到的問題是當我遠端到電腦上,本地以 yum 找得到的 ftp client 連到
localhost 之後,
雖然可以看到家目錄裡面的檔案,可是竟然完全看不到 /var/www/html 的內容。
連線的過程如下:

[使用者名稱@centos-7 home]$ ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:使用者名稱): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var/www/html
250 Directory successfully changed.
ftp> ls
229 Entering Extended Passive Mode (|||55575|).
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp>

照理說,ftp 使用者有該目錄的存取權限,而vsftpd也是以 root 身份執行的系統服務,
應該不會這樣吧~

原本從網路上求解後,以為是 SELinux 設定的問題,可是以
cat /var/log/messages | grep SELinux
調閱 /var/log/messages 卻只有下列訊息。
跟鳥哥說 SELinux 會有的過濾訊息不太一樣。

Feb 20 12:25:57 centos-7 kernel: SELinux: Initializing.
Feb 20 12:26:07 centos-7 kernel: SELinux: Class bpf not defined in policy.
Feb 20 12:26:07 centos-7 kernel: SELinux: the above unknown classes and
permissions will be allowed
Feb 20 12:26:07 centos-7 systemd[1]: Successfully loaded SELinux policy in
311.322ms.

請問有可能是哪裡設定錯誤呢?

謝謝大家指教~

--

All Comments

Ursula avatarUrsula2019-02-24
其實把SELinux關掉就好…
Heather avatarHeather2019-02-28
我都把 /var/www/html 的user和group設成 www-data
Eden avatarEden2019-03-01
供您參考
Mason avatarMason2019-03-06
如果會因為關掉SELinux被入侵那表示外面的防火牆就有問
題了..
Una avatarUna2019-03-10
你可以把selinux設定成permissive啊,如果出問題也找得
Hardy avatarHardy2019-03-11
到log,之後要啟用也比較知道哪邊可能會因此需要調整
Adele avatarAdele2019-03-14
selinux 相關的 log 沒記錯的話應該都在/var/log/audit
那邊
Adele avatarAdele2019-03-16
如果你有裝 setroubleshoot 可以設定當 SELinux 發出警告
Skylar DavisLinda avatarSkylar DavisLinda2019-03-20
的時候主動寄信通知,同時也會解釋問題發生原因
Victoria avatarVictoria2019-03-23
相關 man page 像是 httpd_selinux 和 ftpd_selinux 通常
Madame avatarMadame2019-03-27
也會有些提示,雖然不見得跟你的使用情境完全相同
再來就是 semanage / sesearch / audit2why 自己處理了