1. 程式人生 > >Linux下使用Apache訪問FTP資料夾引起的問題

Linux下使用Apache訪問FTP資料夾引起的問題

通過FTP伺服器接收由IP攝像頭上傳的抓圖檔案,在通過Apache實現到HTTP的訪問,結果配置FTP和Apache遇到了奇怪的許可權問題,與一般的問題不同,經過驗證,終於找打瞭解決方案。

403 許可權問題

無論什麼問題,首先禁用SELinux,看看是否正常。
禁用SELinux許可權的方法是:setenforce 0
開啟許可權是:setenforece 1
一般情況下,生產伺服器建議開啟SELinux,以免遭受莫名攻擊。

搜尋許可權問題

Apache日誌提示:because search permissions are missing on a component of the path
一般為目錄許可權問題,需要注意的是對於需要HTTP訪問的目錄必需從根開始的到需要訪問的檔案的上級目錄一定需要具有執行許可權(如果目錄不是apache執行的使用者,或者添加了組,那麼其他使用者就需要執行許可權)。注意SELinux也會出現上述錯誤。
需要特別注意的是所有

的上級目錄一定是具有可執行許可權的。
Linux中使用者的home目錄就是700許可權(即組使用者和其他使用者沒有任何訪問許可權)
一般需要訪問的目錄為755許可權(即組使用者和其他使用者具有讀和執行許可權)
比如給/home/ftp目錄的其他戶增加許可權可以採用:

chmod o+x /home/ftp
chmod 755 /home/ftp

FTP目錄(home目錄)無法被http訪問的問題

在開啟SELinux下,一般FTP目錄為ftp使用者的目錄,屬於系統資源,SELinux不允許httpd訪問,需要新增http角色型別(httpd_sys_content_t ),這樣,這個目錄的檔案就可以訪問了。
命令如下:

// Apache httpd可以訪問
chcon -R -t httpd_sys_content_t /data/ftp/camera
// Aapache httpd 可以讀寫(注意目錄許可權)
chcon -R -t public_content_rw_t  /data/ftp/camera
// Apache httpd 可以讀寫系統目錄
chcon -R -t httpd_sys_rw_content_t /data/ftp/camera

我測試了一些相關的SELinux相關的相關選項,發現意義不大。
如果希望查詢相關的SELinux選型,可以通過命令:
getsebool -a | grep http
SELinux設定啟用命令如下:
setsebool -P allow_ftpd_anon_write=1

通過restorecon -R -v /data/ftp/camera或者chcon -R -t defalut_t /data/ftp/camera恢復所有SELinux角色配置後,發現檔案即無法訪問。
通過ls -lZ 命令可以檢視角色配置策略。

通用通過檢視審計日誌( /var/log/audit/audit.log)發現由於目標SELinux配置導致的訪問拒絕:

type=AVC msg=audit(1497436934.937:33464): avc: denied { getattr } for pid=26873
comm=”httpd” path=”/data/ftp/test/index.html”
dev=”dm-0” ino=204159993
scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:default_t:s0
tclass=file

從上面可以看出:
scontext=system_u:system_r:httpd_t:s0,
而目標內容為:
tcontext=unconfined_u:object_r:default_t:s0
這也就產生了httpd日誌的問題:
[Wed Jun 14 18:44:52.696084 2017] [core:error] [pid 26872] (13)Permission denied: [client 192.168.88.225:57438] AH00035: access to /img1/YUNBO-LEFT-AISLE/2017-06-14/001/jpg/13/52/46[M][[email protected]][0].jpg denied (filesystem path ‘/data/ftp/camera/YUNBO-LEFT-AISLE/2017-06-14/001/jpg/13/52/46[M][[email protected]][0].jpg’) because search permissions are missing on a component of the path

相關推薦

Linux使用Apache訪問FTP資料引起的問題

通過FTP伺服器接收由IP攝像頭上傳的抓圖檔案,在通過Apache實現到HTTP的訪問,結果配置FTP和Apache遇到了奇怪的許可權問題,與一般的問題不同,經過驗證,終於找打瞭解決方案。 403 許可權問題 無論什麼問題,首先禁用SELinux,看看是

Linux檢視檔案和資料佔用記憶體大小、刪除日誌 命令

轉:https://www.cnblogs.com/lixuwu/p/5944062.html 閱讀目錄 1 Linux下檢視檔案和資料夾大小 2 刪除系統日誌等 3 實踐 場景:在sts中執行自動部署時候maven提示No space left on d

Linux檢視檔案和資料大小

zt:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。     df可以檢視一級資料夾大小、使用比例、檔案系統及其

Linux檢視檔案和資料大小(df&du)

df 用法:df [選項]… [檔案]… 顯示每個檔案所在的檔案系統的資訊,預設顯示全部的檔案系統 常用選項 -h, –human-readable 大小顯示為人類易讀形式 (e.g., 1K

Linux檢視檔案和資料大小的df和du命令聯絡與區別

前面經常需要對Host裡的多個VM進行一些操作如take snapshot等,需要檢視容量時經常用到df -h,但是用到du  的比較少,當需要檢視具體的某個資料夾下的各個檔案 的大小時就需要用到du , 看了下面的介紹當使用 du -h --max-depth=1 wor

Linux檢視檔案和資料大小--df,du

當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。    df可以檢視一級資料夾大小、使用比例、檔案系統及其掛入點,但對檔案卻無能為力。    du可以檢視檔案及資料夾的大小。    兩者配合使用,非常有效。比如用df檢視哪個一級目錄過大,然後用d

linux遞迴刪除資料,簡單實現rm的功能

/*******************myrm.c 閫掑綊鐨勫垹闄や竴涓洰褰曘€?*鏉ㄥ環鍚?2009.4.8*淇敼錛?*******************/ #include<stdio.h>#include<stdlib.h>#includ

Linux遍歷子資料修改許可權

在linux下,我們可以用chmod更改檔案或目錄屬性 例如: chmod mode file|dir當資料夾具備相同的許可權,有些資料夾下面套著好幾層目錄,一層一層的用chmod不是辦法我們可以這樣改變所有子目錄的許可權: chmod mode dir -R 我們也可以用S

[Linux]Linux檢視檔案和資料大小-檢視容量-檢視資料碟符容量

鋒影 email:[email protected] 如果你認為本系列文章對你有所幫助,請大家有錢的捧個錢場,點選此處贊助,贊助額0.1元起步,多少隨意 當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。     df可以檢視一級

雙系統Linux無法訪問windows資料的問題

修復ubuntu16.04+win10雙系統linux無法訪問windows資料夾的問題 裝雙系統可以互相訪問檔案的話比較方便,找到教程修復了這個bug後記錄一下。 出現這種錯誤的原因是:win8以上有快速啟動功能佔用了磁碟,ubuntu不能訪問.

Linux C++ 遞迴刪除資料所以內容

#include <dirent.h> void delete_path(const char* path){ __android_log_print(ANDROID_LOG_IN

linux檢視目錄大小 linux統計目錄大小並排序 檢視目錄所有一級子目錄資料大小 du -h --max-depth=1 |grep []

du -sh    #統計當前目錄的大小,以直觀方式展現 du -h --max-depth=1 |grep 'G' |sort   #檢視上G目錄並排序 du -sh --max-depth=1  #檢視當前目錄下所有一級子目錄資料夾大小 du -h --max-depth=1 |sort    #檢視當前

如何利用android訪問assets的檔案或資料

package com.bn.pp7; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.app.Activity; import android.o

遇到問題-----ftp---windows----開啟FTP資料出錯--windows無法訪問資料。請確保輸入的檔名是否正確,並且您有權訪問此檔案

現象之前一直在用ftp來訪問資源。電腦重啟後windows無法訪問此資料夾。請確保輸入的檔名是否正確,並且您有權訪問此檔案。解法方法確認ftp服務正常1.在瀏覽器輸入ftp資源地址首先在瀏覽器輸入ftp

Spring boot(15) spring boot admin server作為普通工程的時候,無法訪問static資料的靜態資源

目前想將spring boot 新增到自己的許可權系統中 但是發現只要pom.xml引用 <!-- spring boot admin監控end--> <dependency

解決tomcat不能訪問中文資料或中文檔名問題

今天也寫這篇部落格是因為我自己也遇到了這個問題,是做java開發的,前端用的是jsp,jsp中的編碼是“utf-8”,但是在tomcat下卻不能訪問中文名稱的檔案,解決辦法如下: 解決問題的核心在於修

linux 批量查詢並替換資料所有檔案的內容

1.批量查詢某個目下檔案的包含的內容,例如: grep -rn "要找查詢的文字" ./ 2.批量查詢並替換當前資料夾下的檔案內容。 sed -i "s/要找查詢的文字/替換後的文字/g" `grep -rl "要找查詢的文字" ./` 3.批量查

LinuxLinux統計當前文件的文件個數、目錄個數

article logs 過濾 ref bash 輸出 子文件夾 http 輸出信息 統計當前文件夾下文件的個數,包括子文件夾裏的 ls -lR|grep "^-"|wc -l 統計文件夾下目錄的個數,包括子文件夾裏的 ls -lR|grep "^d"

linuxApache的安裝

linux Apache 安裝 Apache是一個基金會的名字,httpd才是我們需要安裝的軟件包apr和apr-util是一個通用的函數庫,它讓httpd可以不關聯底層操作系統平臺,可以很方便的移植,如果不安裝這兩個,httpd就無法工作。步驟1、下載httpd、apr和apr-utilwget

albert1017 Linux壓縮某個文件(文件打包)

-bash 舉例 AR 當前目錄 linux zip 格式 時間 not unzip tar -zcvf /home/xahot.tar.gz /xahottar -zcvf 打包後生成的文件名全路徑 要打包的目錄例子:把/xahot文件夾打包後生成一個/home/xaho