「第3節 關於linux平台與apache伺服器的必備知識」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"EN-US">linux</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">是一個開放的軟體,他有很多迷人的特性,相信只要用過它一次的工程師,不愛上它的人應該是沒有才對。這一套軟體的美好的地方有很多,不過不在本書所應該要包含的範圍裡,不過我們需要</span><span style="font-family: PMingLiU;"
lang="EN-US">apache</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">這一套全世界最好的</span><span style="font-family: PMingLiU;"
lang="EN-US">web</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">伺服器來為我們服務的關系,所以借這裡的版面,探討兩個重要的觀念:<br>
一、linux的使用者與群組管理。<br>
二、apache的使用者管理,與basic認証。<br></span></font></p>
<p><b><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">一、linux的使用者與群組管理:</span></font></b></p>
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">通在在</span><span style="font-family: PMingLiU;" lang=
"EN-US">linux</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">下執行程式時,權限是很重要的一個觀念,這一個檔案是誰的,誰能夠閱覽,誰能夠編輯,誰能夠執行,都可以明確的設定。因為linux本身專為多人同時使用所設計的一套作業系統,所以在裡頭有非常嚴謹的使用者與使用者郡組的定義。<br>
</span></font></p>
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">在linux之下,關於使用者與群組管理的命令,常常用的大概有下列幾種:</span></font></p>
<ul>
<li><font size="3">useradd :註冊一位新的使用者</font></li>
<li><font size="3">userdel:刪除一位使用者<br></font></li>
<li><font size="3">usermod:修改使用者設定內容<br></font></li>
<li><font size="3">passwd:更改使用者的密碼</font></li>
<li><font size="3">groupadd :增加群組<br></font></li>
<li><font size="3">groupdel:刪除群組<br></font></li>
<li><font size="3">groupmod:修改群組詳細設定內容<br></font></li>
<li><font size="3">groups:查看當前使用者所參加的群組</font></li>
<li><span class="text_import2"><font face="細明體"><font size=
"3">chgrp:改變<b>檔案</b>所屬群組</font></font></span></li>
<li><font size="3">chown :改變<b>檔案的擁有人</b></font></li>
<li><font size="3">chmod :改變<b>檔案</b>的屬性、
SUID、等等的特性</font></li>
</ul>
<br>
雖然命令很多,但是如果化整為零,其實使用者管理的內容,大多數都記載在/etc/passwd與/etc/group這兩個檔案,大多數的命令也是用來
幫助你修改這兩個檔案的內容。如果說你已經是linux的熟手了,或許你也會像我一樣比較喜歡手動去編輯這兩個檔案的內容。<br>
<br>
使用者與群組在linux是重要的觀念,所以有數量相當多的命令,詳細情形請參考linux的相關書藉。這裡只作與nagios使用上相關的簡介。<br>
<br>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">在我們安
裝nagios的時候,需要指定nagios執行之時的使用者帳戶,群組,以及執行命令之時的使用者帳戶,群組。你可以指定任何帳戶,但是通常我們都使用
這些預設值。預設值的使用者帳戶是nagios。群組也是nagios。所以我們必須建立這一個帳戶及這一個用戶之後,才能開始我們的安裝。<br>
</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">安裝的細節將於後面說明,當一台已經在運行nagios的機器,我們使用ps這個命令可以發現這樣子的資訊:<br>
</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>nagios </b> 21684 0.0 0.2 5764 1052 ? S 09:17 0:00
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg<br>
<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">nagios的程序,正在由nagios的使用者所運行著。<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>nagios </b> 21685 0.0 0.1 1660 596 ? S 09:17 0:00
/usr/local/nagios/libexec/<b>check_ping</b> -H 192.168.3.214 -w 100.0,20% -c
500.0,60% -p 5<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>check_ping</b></font></span><span style="font-family: PMingLiU;" lang=
"ZH-TW"><font size=
"3">這一個命令正在被執行,檢查位於</font></span> <span style=
"font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">192.168.3.214</font></span> <span style="font-family: PMingLiU;" lang=
"ZH-TW"><font size="3">的主機。<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3">不只是
nagios的安裝,其實很多其他程式的安裝也是如此。apache也是,雖然啟動主程式的通常是root,但是由root所fork出去的
process,也就是apache所使用來執行cgi,對應使用者對於網頁請求…等等的動作時,所使用的身份,也是必須在apache的設定檔裡來進行
設定。<br></font></span></p>
<p><font size="3"><font color="#0000FF">#
語法:<b>User</b>[username/#uid]</font># 說明:設定
httpd這程式的執行者是誰.<br>
# 一般是 nobody,也可以是已註冊的 <b>user</b>,若用
<b>user</b>id 要加上 # 號</font></p>
<p><br>
<font size="3"><font color="#0000FF">#
語法:<b>Group</b>[groupname/#gid]</font># 說明:設定
httpd這程式的執行者所屬的群組<br>
# 一般是 nogroup,此 <b>group</b> 必須要存在於
/etc/<b>group</b>中<br>
<br></font></p>
<p>
當設定完成之後,httpd.conf裡頭應該會有如下所示的兩行:<br>
User nobody<br>
Group nobody<br></p>
<p>
當設定完成,啟動apache時,利用ps這個命令,可以發現,<br>
<b>root </b> 30009 0.0 0.1 12716 792 ? S Nov17 0:37
/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4075 0.0 0.3 12852 1748 ? S Dec06 0:01
/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4076 0.0 0.3 12924 1752 ? S Dec06 0:02
/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4077 0.0 0.3 12852 1748 ? S Dec06 0:01
/servers/apache/bin/httpd -k start<br></p>
<p>
除了主要的process是root之外(因為我們是由root來啟動apache的),其余的子process都是nobody。<br>
</p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3">熟悉
windows的人可能一開始會覺得麻煩。因為在windows裡通常安裝一個程式,只要選擇setup.exe
或
install.exe,就可以輕鬆的完成,windows很多細節都幫我們包裝起來了。在linux裡頭,由於一提到linux系列的作業系統,令人想
到的都是放在機房裡的大型主機,或是與server這個字會扯上一些關系,server通常必須要回應來個於client的請求,以及很多使用者的遠端登
入,所以說,落實使用者管理是一件非常基要的問題,而且這種管理也與安全性習習相關。<br>
</font></span></p>
<font size="3"><br>
<br></font>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">但是,apache必須要執行nagiois套件裡頭的cgi程式。所以nagios的程式,必須是要能夠被nobody所執行,所以簡單的說,我們必須將nagios的檔案,除了nagios本身可以執行之外,也要能夠讓nobody也可以執行。</font></span></p>
<p><font size="3">以下是常常使用的命令:</font></p>
<p><font size="3"><!--StartFragment --></font></p>
<ul>
<li style=
"list-style-type: none; list-style-image: none; list-style-position: outside;">
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">以上說明了linuix的身份。我們接下來要進行的設定,與apache也是習習相關,我們知道,我們常常在某個網站登入會員,這種使用者的觀念其實在到處都可以見到。apache裡頭也有這樣子的概念。接下來我們要來看看如何在apache裡面,設定使用者。</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">因為nagios可以接受外部來的命令,所以我們可以在網路上直接對它來進行設定,但是為了增加安全性,必須要事先在nagios裡指定誰能夠執行這些命令。那一個身份的使用者可以執行那些命令。</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">比方說你如果是經理,那你就有可以執行申請預算的命令,你如果是員工,那你就無法自已執行,可能要透過你的經理。類似這種概念,我們可以用以下的命令在apache裡增加使用者。</font></span></p>
<p><font size="3"><!--StartFragment --></font></p>
<p><font color="#0000FF" size="3">htpasswd 說明:</font></p>
<blockquote>
<p><font face="Courier" size="3">htpasswd -{option}
{passwd_file}{user}</font></p>
<p><font size="3">option 可使用:</font></p>
<ul>
<li><font size="3">-m 使用 MD5 編碼</font></li>
<li><font size="3">-c 建立新的密碼檔</font></li>
<li><font size="3">-b 附帶有
"密碼"(不用再輸入一次密碼)</font></li>
</ul>
</blockquote>
<p><font size="3">建立 steven 的帳號密碼:</font></p>
<table border="0" cellpadding="0" cellspacing="0" width="75%">
<tbody>
<tr>
<td class="BbGf"><font size="3">[root@mailgw http_auth_users]# htpasswd
-m.htpasswd steven<br>
New password:<br>
Re-type new password:<br>
Adding password for user steven<br>
[root@mailgw http_auth_users]#</font></td>
</tr>
</tbody>
</table>
<p><font size="3">現在開啟您的
Broser,輸入http://{Your_URL}/{Need_Password_Dir}
本例為http://www.abc.com.tw/secure_data
時就會出現認證畫面了。</font></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">增加了這些使用者之後,當我們訪問nagios時,會出現這樣子的畫面:</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3"><img src=
"http://ms.ntcb.edu.tw/%7Esteven/article/images/apache2_security-01.gif"
height="208" width="355"></font></span></p>
<p><font size=
"3">這個時候我們只要輸入剛剛我們所建立的使用者id以及密碼之後,我們就具有了這一個使用者的身份。</font></p>
<p><font size=
"3">我們可以看一下apache所吐出的log,確認一下是否我們已經成為這種身份。</font></p>
<p><font size=
"3">這一種身份就是nagios裡,可以用來設定那種身份,可以執行何種命令的一個依據。</font></p>
<p><font size=
"3">如果看一下以下的圖應該可以簡單的了解到,nagios</font></p>
</li>
</ul>
<p><font size="3">此
外,nagios在監視之時,所使用的是nagios的身份,這個身份在大多的時候都沒有問題。不過,在nagios活用裡,我們常常需要執行一些不是
nagios的身份所能夠達行的事情。比方說,我們要重新啟動某個服務。在liunx裡,要啟動什麼服務通常都需要具有root的身份,這個時候我們可以
活用suid來幫助我們解決這一個問題。</font></p>
<p><font size="3"><!--StartFragment --></font></p>
<p><font size="3"><b>SUID</b> 和 <b>SGID</b> 。UID 和
GID您應該知道了吧﹖您執行 id
這個命令就可以看出來自己是的ID 是什麼。當您在
<b>Linux</b>系統上面執行一個<b>檔案</b>的時候(具有
xpermission)﹐這個<b>檔案</b>所執行的程式﹐所具備的<b>權限</b>﹐就以執行者的ID
為準﹕如果您是 root﹐那麼這個程式也是以
root的<b>權限</b>執行﹔如果您是 user1﹐那就以
user1的<b>權限</b>執行。但如果﹐一個執行檔還具有
<b>SUID</b>屬性的話﹐那這個程式所具有的<b>權限</b>﹐就不是命令的執行者﹐而是<b>檔案</b>的擁有者﹕如果一個<b>檔案</b>具備<b>SUID</b>
屬性﹐它的 user 和 group 都是 root﹐而且 others也具有 x
<b>權限</b>﹐那麼﹐當
user1執行這個<b>檔案</b>的時候﹐程式所具有的<b>權限</b>就不是user1
而是 root﹗同樣﹐如果
SGID也打開了﹐那麼這個程式也具有<b>檔案</b>之
goup群組相同的<b>權限</b>。</font></p>
<p><font size=
"3">這樣的設計﹐是讓一些普通使用者以<b>檔案</b>擁有者的<b>權限</b>去執行某些程式。例如﹕某些程式﹐如passwd
(您不妨輸入 ls -l
/usr/bin/passwd看看)﹐需要寫入<b>檔案</b>系統中使用者本身不能存取的位置(如/etc/shadow)﹐如果沒有
<b>SUID</b> 和
SGID屬性﹐那這樣的設計是沒辦法做到的。不過﹐這樣的設計﹐也同時帶來了系統上的安全威脅。比方說﹕系統被植入一個擁有者為root
的後門程式﹐它能抓取只有
root才能讀取的密碼<b>檔案</b>。如果在沒有
<b>SUID</b>的情況之下﹐就算是一般用戶執行它﹐也沒辦法達到目的﹐因為程式只具備一般用戶的身份而已﹔但如果這個程式有設定<b>SUID</b>﹐就算一般用戶執行它﹐也能得逞﹗</font></p>
<br>
<p class="MsoNormal"><br></p>
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"EN-US">linux</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">是一個開放的軟體,他有很多迷人的特性,相信只要用過它一次的工程師,不愛上它的人應該是沒有才對。這一套軟體的美好的地方有很多,不過不在本書所應該要包含的範圍裡,不過我們需要</span><span style="font-family: PMingLiU;"
lang="EN-US">apache</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">這一套全世界最好的</span><span style="font-family: PMingLiU;"
lang="EN-US">web</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">伺服器來為我們服務的關系,所以借這裡的版面,探討兩個重要的觀念:<br>
一、linux的使用者與群組管理。<br>
二、apache的使用者管理,與basic認証。<br></span></font></p>
<p><b><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">一、linux的使用者與群組管理:</span></font></b></p>
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">通在在</span><span style="font-family: PMingLiU;" lang=
"EN-US">linux</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">下執行程式時,權限是很重要的一個觀念,這一個檔案是誰的,誰能夠閱覽,誰能夠編輯,誰能夠執行,都可以明確的設定。因為linux本身專為多人同時使用所設計的一套作業系統,所以在裡頭有非常嚴謹的使用者與使用者郡組的定義。<br>
</span></font></p>
<p><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">在linux之下,關於使用者與群組管理的命令,常常用的大概有下列幾種:</span></font></p>
<ul>
<li><font size="3">useradd :註冊一位新的使用者</font></li>
<li><font size="3">userdel:刪除一位使用者<br></font></li>
<li><font size="3">usermod:修改使用者設定內容<br></font></li>
<li><font size="3">passwd:更改使用者的密碼</font></li>
<li><font size="3">groupadd :增加群組<br></font></li>
<li><font size="3">groupdel:刪除群組<br></font></li>
<li><font size="3">groupmod:修改群組詳細設定內容<br></font></li>
<li><font size="3">groups:查看當前使用者所參加的群組</font></li>
</ul>
<br>
雖
然命令很多,但是如果化整為零,其實使用者管理的內容,大多數都記載在/etc/passwd與/etc/group這兩個檔案,大多數的命令也是用來幫
助你修改這兩個檔案的內容。如果說你已經是linux的熟手了,或許你也會像我一樣比較喜歡手動去編輯這兩個檔案的內容。<br>
<br>
使用者與群組在linux是重要的觀念,所以有數量相當多的命令,詳細情形請參考linux的相關書藉。這裡只作與nagios使用上相關的簡介。<br>
<br>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3">在
我們安裝nagios的時候,需要指定nagios執行之時的使用者帳戶,群組,以及執行命令之時的使用者帳戶,群組。你可以指定任何帳戶,但是通常我們
都使用這些預設值。預設值的使用者帳戶是nagios。群組也是nagios。所以我們必須建立這一個帳戶及這一個用戶之後,才能開始我們的安裝。<br>
</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">安裝的細節將於後面說明,當一台已經在運行nagios的機器,我們使用ps這個命令可以發現這樣子的資訊:<br>
</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>nagios </b> 21684 0.0 0.2 5764 1052 ? S 09:17
0:00/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg<br>
<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">nagios的程序,正在由nagios的使用者所運行著。<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>nagios </b> 21685 0.0 0.1 1660 596 ? S 09:17
0:00/usr/local/nagios/libexec/<b>check_ping</b> -H 192.168.3.214 -w 100.0,20%
-c500.0,60% -p 5<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>check_ping</b></font></span><span style="font-family: PMingLiU;" lang=
"ZH-TW"><font size="3">這一個命令正在被</font></span><span style=
"font-family: PMingLiU;" lang="ZH-TW"><font size=
"3"><b>nagios</b></font></span><span style="font-family: PMingLiU;" lang=
"ZH-TW"><font size="3">執行,檢查位於</font></span> <span style=
"font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">192.168.3.214</font></span> <span style="font-family: PMingLiU;" lang=
"ZH-TW"><font size="3">的主機。<br></font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3">不
只是nagios的安裝,其實很多其他程式的安裝也是如此。apache也是,雖然啟動主程式的通常是root,但是由root所fork出去的
process,也就是apache所使用來執行cgi,對應使用者對於網頁請求…等等的動作時,所使用的身份,也是必須在apache的設定檔裡來進行
設定。<br></font></span></p>
<p><font size="3"><font color=
"#0000FF">#語法:<b>User</b>[username/#uid]</font><br>
# 說明:設定httpd這程式的執行者是誰.<br>
# 一般是 nobody,也可以是已註冊的 <b>user</b>,若用<b>user</b>id
要加上 # 號</font></p>
<p><br>
<font size="3"><font color=
"#0000FF">#語法:<b>Group</b>[groupname/#gid]</font><br>
# 說明:設定httpd這程式的執行者所屬的群組<br>
# 一般是 nogroup,此 <b>group</b>
必須要存在於/etc/<b>group</b>中<br>
<br></font></p>
<p>
當設定完成之後,httpd.conf裡頭應該會有如下所示的兩行:<br>
User nobody<br>
Group nobody<br></p>
<p>
當設定完成,啟動apache時,利用ps這個命令,可以發現,<br>
<b>root </b> 30009 0.0 0.1 12716 792 ? S Nov17
0:37/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4075 0.0 0.3 12852 1748 ? S Dec06
0:01/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4076 0.0 0.3 12924 1752 ? S Dec06
0:02/servers/apache/bin/httpd -k start<br>
<b>nobody </b> 4077 0.0 0.3 12852 1748 ? S Dec06
0:01/servers/apache/bin/httpd -k start<br></p>
<p>
除了主要的process是root之外(因為我們是由root來啟動apache的),其余的子process都是nobody。<br>
</p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3">熟
悉windows的人可能一開始會覺得麻煩。因為在windows裡通常安裝一個程式,只要選擇setup.exe或install.exe,就可以輕鬆
的完成,windows很多細節都幫我們包裝起來了。在linux裡頭,由於一提到linux系列的作業系統,令人想到的都是放在機房裡的大型主機,或是
與server這個字會扯上一些關系,server通常必須要回應來個於client的請求,以及很多使用者的遠端登入,所以說,落實使用者管理是一件非
常基要的問題,而且這種管理也與安全性習習相關。<br></font></span></p>
<font size=
"3">再度以nagios為例子,我們先看看下面這一張圖:<br>
<br>
nagios的deamon執行plugin之後取得結果,將結果放在檔案裡保存。而apache,也就是nobody這一個角色,執行cgi,來查看執行的結果檔案,這些cgi種類很多,但是擁有者都是nagios。<br>
這造成了一個問題,apache需要執行cgi,但是apache的身份是nobody,而這些cgi的擁有者是nagios。nobody想要去執行
nagios的程式,就好象是有一個路人跑到你家來跟你借廁所一樣的非常突兀。通常的情況是不語可的,除非你將這些cgi的權限設定成任何人都可以隨意使
用。<br>
但是我們又不想要這麼做,我們只想要讓nobody與nagios這兩個使用者能夠使用,其他人因為完全不相關,所以並不想要開發權限給他們,以免造成安全上的問題。<br>
為了解決這個需求,我們必須用到另外一個觀念,也就是群組(group)。此時我們需要與以下的命令交互使用:<br>
</font>
<ul>
<li><span class="text_import2"><font face="細明體"><font size=
"3">chgrp:改變<b>檔案</b>所屬群組</font></font></span></li>
<li><font size="3">chown :改變<b>檔案的擁有人</b></font></li>
<li><font size="3">chmod
:改變<b>檔案</b>的屬性、SUID、等等的特性</font></li>
</ul>
這些命令可以幫助我們,將檔案指定給我們已經設定好的群組以及使用者。<br>
<br>
<font size="3"><br>
<br></font>
<p><b><font size="3"><span style="font-family: PMingLiU;" lang=
"ZH-TW">二、apache的使用者管理,與basic認証</span></font></b></p>
<p><font size="3">以下是常常使用的命令:</font></p>
<p><font size="3"><!--StartFragment --></font></p>
<ul>
<li style=
"list-style-type: none; list-style-image: none; list-style-position: outside;">
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">以上說明了linuix的身份。我們接下來要進行的設定,與apache也是習習相關,我們知道,我們常常在某個網站登入會員,這種使用者的觀念其實在到處都可以見到。apache裡頭也有這樣子的概念。接下來我們要來看看如何在apache裡面,設定使用者。</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">因為nagios可以接受外部來的命令,所以我們可以在網路上直接對它來進行設定,但是為了增加安全性,必須要事先在nagios裡指定誰能夠執行這些命令。那一個身份的使用者可以執行那些命令。</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">比方說你如果是經理,那你就有可以執行申請預算的命令,你如果是員工,那你就無法自已執行,可能要透過你的經理。類似這種概念,我們可以用以下的命令在apache裡增加使用者。</font></span></p>
<p><font size="3"><!--StartFragment --></font></p>
<p><font color="#0000FF" size="3">htpasswd 說明:</font></p>
<blockquote>
<p><font face="Courier" size="3">htpasswd
-{option}{passwd_file}{user}</font></p>
<p><font size="3">option 可使用:</font></p>
<ul>
<li><font size="3">-m 使用 MD5 編碼</font></li>
<li><font size="3">-c 建立新的密碼檔</font></li>
<li><font size="3">-b
附帶有"密碼"(不用再輸入一次密碼)</font></li>
</ul>
</blockquote>
<p><font size="3">建立 steven 的帳號密碼:</font></p>
<table border="0" cellpadding="0" cellspacing="0" width="75%">
<tbody>
<tr>
<td class="BbGf"><font size="3">[root@mailgw http_auth_users]#
htpasswd-m.htpasswd steven<br>
New password:<br>
Re-type new password:<br>
Adding password for user steven<br>
[root@mailgw http_auth_users]#</font></td>
</tr>
</tbody>
</table>
<p><font size=
"3">現在開啟您的Broser,輸入http://{Your_URL}/{Need_Password_Dir}本例為http://www.abc.com.tw/secure_data時就會出現認證畫面了。</font></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size=
"3">增加了這些使用者之後,當我們訪問nagios時,會出現這樣子的畫面:</font></span></p>
<p><span style="font-family: PMingLiU;" lang="ZH-TW"><font size="3"><img src=
"http://ms.ntcb.edu.tw/%7Esteven/article/images/apache2_security-01.gif"
height="208" width="355"></font></span></p>
<p><font size=
"3">這個時候我們只要輸入剛剛我們所建立的使用者id以及密碼之後,我們就具有了這一個使用者的身份。</font></p>
<p><font size=
"3">我們可以看一下apache所吐出的log,確認一下是否我們已經成為這種身份。</font></p>
<p><font size=
"3">這一種身份就是nagios裡,可以用來設定那種身份,可以執行何種命令的一個依據。</font></p>
<p><font size=
"3">如果看一下以下的圖應該可以簡單的了解到,nagios</font></p>
</li>
</ul>
<p><font size="3">此
外,nagios在監視之時,所使用的是nagios的身份,這個身份在大多的時候都沒有問題。不過,在nagios活用裡,我們常常需要執行一些不是
nagios的身份所能夠達行的事情。比方說,我們要重新啟動某個服務。在liunx裡,要啟動什麼服務通常都需要具有root的身份,這個時候我們可以
活用suid來幫助我們解決這一個問題。</font></p>
<p><font size="3"><!--StartFragment --></font></p>
<p><font size="3"><b>SUID</b> 和 <b>SGID</b> 。UID
和GID您應該知道了吧﹖您執行
id這個命令就可以看出來自己是的ID
是什麼。當您在<b>Linux</b>系統上面執行一個<b>檔案</b>的時候(具有xpermission)﹐這個<b>檔案</b>所執行的程式﹐所具備的<b>權限</b>﹐就以執行者的ID為準﹕如果您是
root﹐那麼這個程式也是以root的<b>權限</b>執行﹔如果您是
user1﹐那就以user1的<b>權限</b>執行。但如果﹐一個執行檔還具有<b>SUID</b>屬性的話﹐那這個程式所具有的<b>權限</b>﹐就不是命令的執行者﹐而是<b>檔案</b>的擁有者﹕如果一個<b>檔案</b>具備<b>SUID</b>屬性﹐它的
user 和 group 都是 root﹐而且 others也具有
x<b>權限</b>﹐那麼﹐當user1執行這個<b>檔案</b>的時候﹐程式所具有的<b>權限</b>就不是user1而是
root﹗同樣﹐如果SGID也打開了﹐那麼這個程式也具有<b>檔案</b>之goup群組相同的<b>權限</b>。</font></p>
<p><font size=
"3">這樣的設計﹐是讓一些普通使用者以<b>檔案</b>擁有者的<b>權限</b>去執行某些程式。例如﹕某些程式﹐如passwd(您不妨輸入
ls
-l/usr/bin/passwd看看)﹐需要寫入<b>檔案</b>系統中使用者本身不能存取的位置(如/etc/shadow)﹐如果沒有<b>SUID</b>
和SGID屬性﹐那這樣的設計是沒辦法做到的。不過﹐這樣的設計﹐也同時帶來了系統上的安全威脅。比方說﹕系統被植入一個擁有者為root的後門程式﹐它能抓取只有root才能讀取的密碼<b>檔案</b>。如果在沒有<b>SUID</b>的情況之下﹐就算是一般用戶執行它﹐也沒辦法達到目的﹐因為程式只具備一般用戶的身份而已﹔但如果這個程式有設定<b>SUID</b>﹐就算一般用戶執行它﹐也能得逞﹗</font></p>
<br>
<p class="MsoNormal"><br></p>