當前位置:首頁 » 密碼管理 » apache目錄訪問許可權

apache目錄訪問許可權

發布時間: 2023-05-11 21:02:59

⑴ liunx怎麼設置apache的目錄訪問

首先:linux下默認安裝後的Apache根目錄在/var/www/html下,我們需要對目錄進行訪問
第一 :創建自己需要更改的新目錄,並更改宿主許可權為apache用戶 chown -R apache:apache /mnt/chaodiquan.com/www
第二:停止Apache服務 service httpd stop
第三:修改Apache的配置文件,默認在/etc/httpd/conf/httpd.conf,找到Document Root修改為你需要許可權
第四:保存配置文件後,重啟Apache服務,你的Apache目錄更改就會生效了。

⑵ apache怎麼禁止用戶訪問某個目錄下的某種類型文件

這個種限制apache的配置是無法達到的。你只要通過限制該文件類型可讀許可權就可以了。比如你apache服務是apache用戶在跑,你想讓/var/www/html目錄下的.htm文件被apache讀取。那你只需要做兩步:
12chown root.root /var/www/html/*.htmchmod 600 /var/www/html/*.htm
這樣apache就不會訪問到了

⑶ apache 403 forbidden怎麼解決

在配置Linux的 Apache服務時,經常會遇到http403錯誤,我今天配置測試時也出現了,最後解決了,總結了一下。http 403錯誤是拒絕訪問的意思,有很多原因的。還有,這些問題在win平台的Apache里一樣會發生!我按照經驗總結的主要有以下4種原因!

本人測試的環境 是:Scientific Linux 5.3(與RHEL和CentOS百分百兼容!),其它版本的Linux應該通用,沒測試。

1. 訪問的文檔許可權不夠。要755以上許可權。解決方法:用命令chmod 755 /var/www/ 或其他相應目錄。 2. SELinux或防火牆的原因。解決方法:先關閉SELinux和讓防火牆通過WWW服務。 3. 虛擬主機配置錯誤。例如我遇到過一次的: httpd.conf里載入了虛擬主機的配置文件:

代碼如下:

# Virtual hosts Include conf/extra/httpd-vhosts.conf

而conf/extra/httpd-vhosts.conf並沒有配置好,而且虛擬主機功能暫時還沒有用,所以把Include conf/extra/httpd-vhosts.conf注釋掉,重啟apache後正常了。 解決方法:重新配置虛擬主機或暫時關閉。

4. DocumentRoot的設置。解決方法如下:

打開 apache的配置文件httpd.conf,找到這段代碼:

代碼如下:

<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>

有時候由於配置了php後,這里的「Deny from all」已經拒絕了一切連接。把該行改成「allow from all」,修改後的代碼如下,問題解決。

代碼如下:

<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory>

以下是其它網友的補充:

部署apache服務Forbidden 403問題小結

很多朋友和學生都問過我同樣的問題 訪問網站Forbidden 403 什麼原因?一般頁面提示為:

Forbidden You don't have permission to access / on this server.

http錯誤代碼403: 403 Forbidden 資源不可用。伺服器理解客戶的請求,但拒絕處理它。通常由於伺服器上文件或目錄的許可權設置導致。

通常情況可能(但不限於此)的原因有:

原因1:apache配置文件中沒有對站點目錄的許可權許可,這通常是在初始安裝apache後,更改了默認的apache站點目錄時所至(重要,常發生):

如將站點目錄更改為:/var/blog,則在apache配置文件中如果不加下面的配置 就會返回403錯誤。

<Directory "/var/blog"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

提示:生產環境上面的配置還需修改,見下文,此處僅就本文的主題講解。

原因2:站點目錄下無首頁文件(index文件),而apache的配置又禁止了目錄瀏覽,就會提示403錯誤,配置如下(偶爾發生):

a.站點目錄下無首頁文件(index文件): [root@http-server blog]# pwd /var/blog [root@http-server blog]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 4 22:11 oldboy -rw-r--r-- 1 root root 0 Jun 4 22:11 oldboy.html 提示:上面列出來的就是站點目錄/var/blog目錄下沒有預設 首頁DirectoryIndex index.html

.apache的配置禁止目錄瀏覽的三種配置 第一種配置: <Directory "/var/blog"> Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

第二種配置: <Directory "/var/blog"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

第三種配置: <Directory "/var/blog"> Options None AllowOverride None Order allow,deny Allow from all </Directory>

提示:第二種原因朋友們偶爾會朋友,但遇到問題最多的還是第一種原因。 ======================================================== 以上配置的詳細說明:

原因3:還是Directory許可權問題(不常發生)

如下文:拒絕10.0.0.0/24整段訪問。這樣被拒絕的主機訪問就會出現403錯誤 <Directory "/var/blog"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny #Allow from all Deny from 10.0.0.0/24 <Directory "/var/blog"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny #Allow from all Allow from 10.0.0.116 #Deny from 10.0.0.0/24 </Directory>

原因4:站點目錄許可權問題(不常發生)。

站點目錄需要apache的用戶有訪問許可權,否則就會報403錯誤。 [root@http-server var]# pwd /var [root@http-server var]# chown -R root.root blog/ [root@http-server var]# chmod 700 blog [root@http-server var]# ll -d blog/ drwx------ 3 root root 4096 Jun 4 22:11 blog/

一種可能性是DocumentRoot選項的設置,如果在安裝好apache2後修改了該選項,並且忘記了配置該新目錄的訪問許可權就會出現這樣的情況。

比如apache2安裝好後默認的參數如下:

我們常常會重新指定web文件存放的目錄,比如設定DocumentRoot /var/www這時往往會忽略了對後面的Directory 項的修改,必須將裡面的路徑同時修改為 /var/www才行,否則將會訪問所有目錄都出現 403 forbidden錯誤。

今天在公司電腦上安裝Apache,版本2.2.8,裝完剛測試可以;配置了下php的php.in文件再次localhost打開發現錯誤:HTTP 錯誤 403 - 禁止訪問,即403 Forbidden:You don't have permission to access / on this server.許可權又不夠了? 馬上打開apache的配置文件httpd.conf,逐行檢查。在大約快一半的地方有以下這段代碼:

發現了吧。

由於配置了php後,這里的「Deny from all」已經拒絕了一切連接。把該行改成「allow from all」,修改後的代碼如下,問題解決。

另外一種可能性出現在我們配置了不同的VirtualHost,並且有某個VirtualHost的DocumentRoot不在全局的DocumentRoot目錄下,這時必須在全局種單獨增加對該目錄的Directory 項進行設置,否則該VirtualHost下的所有訪問均會出現403 forbidden錯誤。

這個問題是因為Apache2對於許可權和安全的更高要求,對分布在不同磁碟上的目錄文件進行嚴格管理,我們進行web規劃的時候必須注意這一點。 試試下面的步驟:

終極解決辦法:如果以上都不行的話!!!

Forbidden You don't have permission to access / ~ web on this server. Additionally, a 403 Forbidden error was encountered while trying to use an Error Document to handle the request.

Apache/2.0.54 (CentOS) Server at 127.0.0.1 Port 80

一般出現這個問題,直觀地會想到的目錄的存取許可權問題,查了很久,調了很久也沒有解決問題。

其間曾想到是否Selinux的問題,進去看了一圈,沒有發現什麼要改的地方。(後來的事實證明,有時候直覺是很準的,能否找到答案,區別往往是:是否在直覺上走的更深入)。

問題的解決用Google以Apache 403搜了好一會,終於在一個博客里看到,作者遇到和我完全相同的問題:Apache、目錄的配置都沒問題,但就是不能顯示頁面。

而解決方法恰恰就是修改Selinux對public_html的訪問控制。

用以下命令修改文件夾安全屬性

⑷ LINUX下apache成功啟動,主目錄文件都可以訪問,但是子目錄都無法訪問,如何解決

許可權 通過root用戶把目錄+子目錄的許可權付給Apache用戶及用戶組
默認用戶接用戶組是daemon
命令如下 chown -R daemon.daemon +文件目錄 ,即將你的應用的所有者變成daemon
這樣就可以訪問你的應用了。

⑸ 怎樣配置httpd.conf,修改文件目錄訪問許可權

Apache的基本設置主要交由httpd.conf來設定管理,我們要修改Apache的相關設定,主要還是通過修改httpd.cong來實現。下面讓我們來看看httpd.conf的內容,它主要分成3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
這表示Apache是以standalone啟動,也可以是inetd。所謂standalone是指啟動一次來接聽所有的連線;而inetd是接到http的連線要求才啟動,隨著連線的結束而結束,這樣負擔是不是很但呢?所以一般都是以standalone啟動。
·ServerRoot "/usr/local/httpd"
此為apache的目錄
·#LocdFile /use/local/httpd/logs/httpd.lock
保留預設值,不更動
·PidFile /usr/local/httpd/logs/httpd.pid
此文件記錄著apache的父處理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存儲處理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
由於我們統籌由httpd.conf來管理,所以這兩個文件預設是註解起來的,可以保留預設值不更動
·Timeout 300
設盯超時的時間。如果用戶端超過300秒還沒連上server,或server超過300秒還沒傳送信息給用戶端,即斷線。
·KeepAlive On
允許用戶端的連線有多個請求,設為Off表示不允許
·MaxKeepAliveRequests 100
每次連線最大的請求樹木,數字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少會有5個閑置的處理程序,如果實際的數目少於此數目,則會增加處理程序。MaxSpareServers 10表示最大的閑置處理程序數目,如果你的網站需求量很大,可以將此數目設大一些,大不要隨便將此數目設得太大。
·StartServers 5
啟動時Server的數目
MaxClients 150
限制同時間最大的連線數目,當然不能設得太小,一旦達到此數目,就無法再增加用戶端
·MaxRequestPerChild 0
限制子處理程序結果前的要求數目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的連接埠或IP
·BindAddress *
可以接聽*(所有IP地址)、指定的IP地址或是完整的域名
·#LoadMole foo_mole libexec/mod_foo.so
使用DSO模塊
·#ExtendedStatus On
可檢閱apache的狀態信息,預設是Off(註解起來)
【第二部分】
如果之前的ServerType是inetd,請直接跳到ServerAdmin。
·Port 80
Standalone伺服器接聽的連接埠,當然也可以是其他小於1023的埠號
·User nobody
·Group nobody
執行httpd的用戶和群組
·ServerAdmin 管理員的電子郵件地址
這是管理員的電子郵件地址,如果apache有問題的話,會寄信通知管理員,當然你也可以建立一個專門負責web的帳號來收信
·ServerName 你的主機名稱
此為主機名稱,如果沒有域名,也可以用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目錄為apache放置網頁的地方,裡面的index.html即為連到此主機的預設首頁
·
Options FollowSymLinks
AllowOverride none

此目錄設定用戶放置網頁的目錄(public_html)的執行動作。詳細的目錄存取方法會在後面說明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all

此目錄設定apache的網頁目錄(htdocs)的執行動作
·UserDir public_html
用戶可在自己的目錄下建立public_html目錄來放置網頁,輸入http://主機地址/~用戶名稱即可連接到...勞撤胖玫牡胤?/a>
·DirectoryIndex index.html
這里設定預設主頁的名稱
·AccessFileName .htaccess
這個是控制存取的文件名稱,一般採用預設的.htaccess名稱,後面會說明htaccess的使用方法
·
Order allow,deny
Deny from all

這用來防止其他人看到.ht開頭的文件內容,不僅是保護.htaccess的內容,還保護.htpasswd的內容。當然也可以直接寫成。如果你有更改AccessFilename,例如將.htaccess改成.accessht,請記得也要在此做相關的更改,如此才能防止其他人看到哦
·#CacheNegotiatedDocs
註解起來是告訴Proxy不要將互動產生的文件存入cache,如果拿掉#,則會存在cache中
·UseCanonicalName On
使用標準的名稱,預設是On。假設有一個web server的全名是www.sample.com,一般稱為www;如果us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件類型的文件。你可以自行編輯mime.types文件。
·DefaultType text/plain
當server不認得此文件類型時的預設格式,此設定是當成一般文字
·
MIMEMagicFile /usr/local/httpd/conf/magic

mod_mime_magic模塊可使server由文件內容決定其MIME類型。如果有載入mod_mime_magic模塊,才會處理MIMEMagicFile這一段。如果是…,則表示如果沒有載入該模塊,才會處理這一段
·HostLookups Off
如果為On,則每次都會向name server解析該IP,記錄此連線的名稱(例如www.apache.org)自換岷牟簧偈奔洌...為Off,僅記錄IP
·ErrorLog /usr/local/httpd/logs/error_log
指定發生錯誤的記錄文件(error_log)位置。如果在沒有指定發生錯誤的記錄文件,則會沿用此文件
·LogLevel warn
記錄分成很多等級,在此是warn。各等級如下: 等級 說明
debug debug信息
info 普通信息
notice 重要信息
warn 警告信息
error 發生錯誤
crit 緊急情況
alert 馬上要處理的情況
amerg 系統快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四種記錄格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的記錄文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
這三個記錄文件也是使用自定義格式(分別是referer、agent、combined),不過註解起來表示未使用這三個文件
·ServerSignature On
設為On時,在server所產生的網頁(像是錯誤發生時)上,會有apache的版本、主機、連接埠的一行信息;如果設為Email,則會有mailto:給管理員的超鏈接
·Alias /icons/ "/usr/local/httpd/icons/"
使用較短的別名,其格式為:Alias 別名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias一樣,只是這是設定server script的目錄
·IndexOptions FancyIndexing
顯示好看的文件清單(配合下面各文件所對應的圖形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
這些是在顯示文件清單(之前所說的FancyIndex)時,各種文件類型的對應圖形。例如.ps .si .eps這三種文件的表示圖形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
這些是在顯示文件清單時,在文件後面附上說明,其格式為:
AddDescription "說明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
顯示文件清單時,在最下面顯示README的文件內容
設置CGI腳本/將httpd.conf做為唯一的配置文件/用戶授權和訪問控制等
關於Apache的配置及使用,在LinuxAid中已經有不少文章做了詳細的闡述,本文討論了在使用Apache時,有關配置文件的使用及對文件的訪問控制等內容,算是對Apache的使用所做的一些補充吧!
如果您對Apache有一定的了解,特別是對幾個配置文件有一定的了解,這將會有助於您對本文內容的理解;如果恰巧您不是很了解這幾個配置文件的使用,那麼就借著這個機會來一起熟悉一下吧。
一、關於CGI執行腳本的配置
這里有兩種設置CGI腳本的方法。第一、CGI的腳本文件以.cgi為擴展名;第二、設置腳本可執行目錄。但是這兩種方法都需要將要執行的文件設置為711,才可以被執行。
第一種方法,我們需要在access.conf文件種將你要發行的目錄設置為Option ExecCGI All,在srm.conf資源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
這樣在所有的目錄種只要你的文件是.cgi為擴展名的,且文件訪問許可權為711的,無論給文件在你發行目錄的任何一個地方都可以做為CGI被Apache伺服器調用。這種方法一般沒有第二種方法安全。
第二種方法,是將一個目錄作為一個可執行目錄,將所有的cgi文件都放在其中,這里就不一定非得是以.cgi為擴展名得文件可以執行,而是只要有711屬性的文件就可以被執行,而且其它的非可執行文件都被禁止訪問。我們的默認配置文件種就有一個很好的例子:
access.conf:

Allow Override None
Options ExecCGI

srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
這樣只要在/home/httpd/cgi-bin/目錄中的可執行文件都可以被Web伺服器調用,而其它的非可執行文件將被拒絕訪問。
二、配置用戶的發行目錄
這里有兩種設置方法:
第一種是系統的默認方法,即用戶目錄下的public_html目錄為用戶的發行目錄,且默認的主頁文件為index.html,且該目錄不支持CGI。
第二種是在其它目錄種專門為用戶設置發布目錄,如我想在/home/html目錄做為用戶的web目錄,那管理員就應該在該目錄下為每一個用戶設置一個子目錄,如:/home/html/user01、/home/html/user02等。那麼,你的srm.conf文件中的UserDir後面就不能再是public_html了,應該改為:UserDir /home/html/*/,注意這里的「*」代表anyone,當你再瀏覽器中請求一個如http://www.domain/~user01時,Apache...ndex.html文件。
這種設置不需要到access.conf中設置該目錄的訪問屬性,還有,當我們設置虛擬主機時也不用設置目錄的訪問屬性,但是如果你想讓某個目錄具有CGI許可權,都要到Access.conf文件中去配置目錄的訪問許可權,如:你想讓你的所有用戶在他們的發布目錄中具有CGI訪問權,則需要在你的access.conf中這樣設置:

Allow Override None
Options ExecCGI

注意這里設置用戶目錄中的cgi-bin子目錄為cgi執行目錄,這是一種安全的設置,而且也是一種UNIX的習慣。
三、如何將Apache伺服器設置為inetd的子服務
當你安裝了Apache後,默認設置為standalone方式運行,如果你想將它設置為inetd的子服務,首先在每次激活Linux時不激活httpd,然後編輯/etc/inetd.conf,在其中加入下列語句:http stream tcp nowait root /usr/sbin/httpd httpd
然後重新激活inetd伺服器。這樣你用ps -aux命令查看進程運行情況時,你不會發現httpd的進程的存在,但是一旦有客戶請求一個頁面時,inetd就激活一個httpd進程為該請求服務,之後就自動釋放,這種運行方式有助於節省系統資源,但是如果你的web服務很重要,一般不建議設置為這種方式運行。
四、將httpd.conf做為唯一的配置文件
在Apache中給用戶提供了三個配置文件: srm.conf、 access.conf 和 httpd.conf files。實際上這三個文件是平等的,所有的配置都可以放在一個單獨的httpd.conf文件中,事實上在Apache 1.3.2中就已經這樣做了,在httpd.conf中應包括以下兩條指令來防止Apache對srm.conf和access.conf兩個配置文件的訪問:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注釋掉以下這兩行即可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
五、用戶授權和訪問控制
你也許在訪問某些網站時會遇到過這樣的情況,當你點擊某個連接時,你的瀏覽器會彈出一個身份驗證的對話框,要求輸入賬號及密碼,如果沒有,就無法繼續瀏覽了。有人會以為這是用CGI做出來的,其實不然,這是WWW伺服器的用戶授權和訪問控制機制在發揮作用。
你是否還記得在設置Apache服務環境的過程中,有……..<./Directory>這個指令,可以對不同的目錄提供不同的保護。但是這樣的設定,需要重新啟動伺服器才會生效,靈活性較差,通過AccessFile指令指定訪問控制文件的方式則比較靈活,在Apache伺服器中設置用戶的訪問控制許可權步驟如下:
1、首先對httpd.conf文件進行設置如下:

# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 一定要設置為All,這樣後面的.htaccess文件才會起作用

Order allow,deny
Allow from all

#
# Order deny,allow
# Deny from all
#

#指定配置存取控制許可權的文件名稱
AccessFileName .htaccess
2、創建.htaccess文件內容
要控制某目錄的訪問許可權必須建立一訪問控制文件,文件名前面指定的「.htaccess」,其內容格式如下:
AuthUserFile 用戶帳號密碼文件名
AuthGroupFile 群組帳號密碼文件名
AuthName 畫面提示文字
AuthType 驗證方式

密碼驗證方式

用戶驗證方式AuthType目前提供了Basic和Digest兩種。
密碼檢驗設定方法與httpd.conf中的相關設定相同。
具體例子如下:
AuthUserFile /etc/secure.user
AuthName 安全認證中心
AuthType Basic

require valid-user

3、建立用戶密碼文件
如果你是第一次創建用戶密碼,命令格式如下:
htpasswd -c 密碼文件名 用戶名稱
在上面的例子中,我們將用戶密碼文件放到了/etc/secure.user文件中,所以這里應按照如下進行操作:
htpasswd -c /etc/secure.user sword
程序會提示你輸入兩次用戶的口令,然後用戶密碼文件就已經創建sword這個用戶也添加完畢了。
如果要向密碼文件中添加新的用戶,按照如下命令格式進行操作:
htpasswd 密碼文件 用戶名稱
這樣,重新啟動httpd後,進行該WEB目錄時就會有一個對話框彈出,要求輸入用戶名及用戶口令了。
4、如何減少訪問控制對Apache性能的影響
頻繁的使用訪問控制會對Apache的性能產生較大的影響,那麼,如何才能減少這種影響呢?最簡單也是最有效的方法之一就是減少.htaccess文件的數目,這樣可以避免Apache對每一個請求都要按照.htaccess文件的內容進行授權檢查。它不僅在當前的目錄中查找.htaccess文件,它還會在當前目錄的父目錄中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目錄下沒有htaccess文件,但Apache仍然會進行例行檢查以確定該文件確實不存在。這是影響很影響伺服器工作效率的事情。下面的方法可以消除這個討厭的過程:將AllowOverride選設置為None,這樣Apache就會檢查.htaccess文件了。將/根目錄的AllowOverride選項設為None,只將需要進行訪問控制的目錄下的AllowOverride選項設置為all,如下面的例子中將/根目錄的AllowOverride 選項關閉了,只打開了/usr/local/etc/httpd/htdocs目錄下的AllowOerride選項,這樣,系統就只

⑹ apache伺服器對目錄的默認訪問控制是

「Deny」from「All」。
1、Apache伺服器對目錄的默認訪問控制是「Deny」from「All」。
2、Apache(音譯為阿帕奇)是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到伺服器中。

⑺ linux如何給文件或目錄添加apache許可權

linux如何給文件或目錄添加apache許可權

在LAMP環境中,測試一個簡單的php文件上傳功能時,發現/var/log/apache2/error.log中出現如下php警告:

[Tue Jan 31 09:40:27 2012] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(/home/leotody/32883679.jpeg): failed to open stream: Permission denied in /var/www/upload_file.php on line 25, referer: http://localhost/info.html

[Tue Jan 31 09:40:27 2012] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phps05ssU' to '/home/leotody/32883679.jpeg'in /var/www/upload_file.php on line 25, referer: http://localhost/info.html

提示沒有訪問許可權,文件上傳的代碼如下:

if (file_exists("upload/" . $_FILES["file"]["name"]))

{

echo $_FILES["file"]["name"] . " already exists. ";

}

else

{

if(move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]))

{

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

else

{

echo "move error!";

}

}

頁面中顯示"move error!",說明move_uploaded_file()函數執行失敗。

通過查找資料,發現網上有說是selinux啟動的原因,檢查系統並未啟動selinux,查看upload目錄默認許可權ls -ld upload,結果為755:

drwxr-xr-x 2 root root 4096 2012-01-31 10:59 upload

將upload目錄許可權改為777,sudo chmod 777 upload,再測試上傳功能成功。但這種修改許可權的方法並不安全。

故可以改upload目錄的擁有者為www-data(即apache),sudo chown -R www-data:www-data upload,然後再測試上傳功能成功。

drwxr-xr-x 2 www-data www-data 4096 2012-01-31 10:59 upload

拓展閱讀

Linux

Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的`多用戶網路操作系統。Linux有上百種不同的發行版,如基於社區開發的debian、archlinux,和基於商業開發的Red Hat Enterprise Linux、SUSE、Oracle Linux等

常用命令及技巧

1、date:列印或者設置系統的日期和時間

2、stty-a:可以查看或者列印控制字元(Ctrl-C、Ctrl-D、Ctrl-Z等)

3、passwd:用passwd-h查看

4、login、 logout : shell的登錄和注銷命令

5、more,less,head tail:顯示或部分顯示文件內容

6、lp/lpstat/cancel,lpr/lpq/lprm:列印文件

7、chmod u+x:更改文件許可權

8、rm -fr dir:刪除非空目錄

9、cp -R dir:拷貝目錄

10、fg jobid:可以將一個後台進程放到前台

11、kill的作用:send a signal to a process、eg:kill-9發送的是SIG_KILL信號,具體發送什麼信號可以通過man kill查看、

12、ps的用法,ps-e或ps-o pid,ppid,session,tpgid,comm(其中session顯示的sessionid,tpgid顯示前台進程組id,comm顯示命令名稱)

13 ip a 查看ip地址信息的命令

14 zcat /proc/config.gz > config 到內核配置文件

;

⑻ 如何限制apache用戶訪問linux根目錄

默認apache在當前目錄下沒有index.html入口就會顯示目錄。讓目錄暴露在外面是非常危險的事,如下操作禁止apache顯示目錄:
進入apache的配置文件
httpd.conf 找到:
Options Indexes FollowSymLinks
修改為:
Options
FollowSymLinks

其實就是將Indexes去掉,Indexes表示若當前目錄沒有index.html就會顯示目錄結構。

⑼ 在Apache2中怎樣對一個目錄加上訪問許可權

Apache單個或多個目錄禁止訪問方法
這種方法通常用來禁止訪問者訪問後台管理目錄或者程序目錄,方法如下
1、打開apache配置文件httpd.conf
2、創建Directory塊,比如禁止訪問某個類庫目錄,可以這樣實現
1
2
3
4

<Directory /var/www/www.leapsoul.cn/inc>
Order Deny,Allow
Deny from all
</Directory>

上述代碼實現了禁止所有用戶訪問www.leapsoul.cn下inc目錄的功能。如要實現禁止訪問所有目錄中inc目錄的功能,只要將
1

<Directory /var/www/www.leapsoul.cn/inc>

更改為
1

<Directory /var/www/www.leapsoul.cn/*/inc>

即可。
3、重啟Apache伺服器。

⑽ apache目錄訪問控制的參數是哪些

1.根目錄的訪問控制

DocumentRoot "/var/www/html"

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

解釋一下:
<Directory/>表示要對文件系統的目錄進行限制
Options FollowSymLinks表示跟隨符號鏈接,關於Option的值參下表

AllowOverrideNone表示不允許覆蓋,AllowOverride的值參見下表,在此例中對根目錄做了非常嚴格的限制,即只允許跟隨符號鏈接,不允許其他文件覆蓋當前的設置。
2.文檔根目錄的訪問控制-----(針對文檔根目錄"/var/www/html"進行限制。)

<Directory "/var/www/html">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>

解釋一下:
OptionsIndexs
FollowSymLinks:設置允許跟隨符號連接:Indexes的含義是如果要訪問的文檔不存在,則會顯示出該目錄下的文件目錄清單。

AllowOverride
None:不允許覆蓋當前設置,即不處理.htaccess文件。
Allow from all:允許從任何地點訪問該目錄
拓展一下(關於OrderAllow,Deny詳解):
Allow和Deny可以用於apache的conf文件或者.htaccess文件中(配合Directory,Location,
Files等),用來控制目錄和文件的訪問授權。

所以,最常用的是:
Order Deny,Allow
Allow from All


意「Deny,Allow」中間只有一個逗號,也只能有一個逗號,有空格都會出錯;單詞的大小寫不限。上面設定的含義是先設定「先檢查禁止設定,沒有禁止
的全部允許」,而第二句沒有Deny,也就是沒有禁止訪問的設定,直接就是允許所有訪問了。這個主要是用來確保或者覆蓋上級目錄的設置,開放所有內容的訪
問權。

按照上面的解釋,下面的設定是無條件禁止訪問:
Order Allow,Deny
Deny from All

如果要禁止部分內容的訪問,其他的全部開放:
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2

apache
會按照order決定最後使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了訪問,但由於在order中allow不是最後規則,因此還
需要看有沒有deny規則,於是到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的「最後」規則非常重要,下面是兩個錯誤的例子和
改正方式:

Order
Deny,Allow
Allow from all
Deny from domain.org
錯誤:想禁止來自domain.org的訪問,但是deny不是最後規則,apache在處理到第二句allow的時候就已經匹配成功,根本就不會去看第三句。
解決方法:Order Allow,Deny,後面兩句不動,即可。

Order
Allow,Deny
Allow from ip1
Deny from all
錯誤:想只允許來自ip1的訪問,但是,雖然第二句中設定了allow規則,由於order中deny在後,所以會以第三句deny為准,而第三句的范圍中又明顯包含了ip1(allinclude ip1),所以所有的訪問都被禁止了。
解決方法一:直接去掉第三句。
解決方法二:
Order Deny,Allow
Deny from all
Allow from ip1

熱點內容
溯源碼怎麼生成 發布:2025-02-09 11:15:15 瀏覽:442
android70flash 發布:2025-02-09 11:15:06 瀏覽:725
如何查看伺服器拒絕信息 發布:2025-02-09 11:13:07 瀏覽:946
靜態編譯失敗怎麼回事 發布:2025-02-09 11:12:54 瀏覽:215
sql能力 發布:2025-02-09 10:43:50 瀏覽:982
編譯framework 發布:2025-02-09 10:42:11 瀏覽:382
五子棋對戰演算法 發布:2025-02-09 10:12:19 瀏覽:713
php樹菜單 發布:2025-02-09 10:04:10 瀏覽:360
linux保存ip 發布:2025-02-09 10:04:10 瀏覽:24
四川霜狼伺服器怎麼樣 發布:2025-02-09 10:02:44 瀏覽:146