Tag: Linux

禁止個別 VirtualHost 或目錄使用 PHP mail() 函式

PHP 的 disable_functions 選項可以停用某些特定的 PHP 函式, 主要是基於安全理由, 將一些對系統有威脅的函式停用, 但 disable_functions 必須透過 php.ini 設定, 因為如果可以在 httpd.conf 或 .htaccess 設定, 使用者便很容易將停用的函式開啟。 之前遇到一個情況, 要將個別 VirtualHost 的 mail() 函式停用, 但主機內其他 VirtualHost 仍要繼續開啟 mail()。雖然 …

個別 VirtualHost 或目錄停用 PHP

在 Linux 安裝 Apache 及 PHP 後, 可以按需要設定個別 VirtualHost 或目錄停用 VirtualHost, 例如一個只用作儲存上載圖片的目錄, 不需要執行 PHP 的權限, 以下的設定方法。 VirtualHost 停用 PHP: 首先開啟儲存 VirtualHost 的檔案, RHEL 及 CentOS 是 /etc/httpd/conf/httpd.conf, 而 Debian …

安裝 ChangePassword 線上修改系統密碼工具

ChangePassword 是一個讓用戶線上修改系統密碼的小工具, 它是由 C 寫成的 CGI, 除了修改系統密碼外, 還未援線上修改 Samba 及 Squid 的密碼。雖然介面看上去很簡單, 但對只想給用戶修改密碼很實用, 以下是安裝方法。 1. ChangePassword 只提供源始碼, 所以要先安裝 GCC: RHEL / CentOS: # yum group install “Development Tools” Debian …

grep 過濾 “#” 及 “;” 的註解行

很多設定檔的註解, 都會以 “#” 或 “;” 開頭, 例如以 Apache 設定檔 httpd.conf 為例, 我的 httpd.conf 有接近四百行: # wc -l httpd.conf 397 httpd.conf 想把註解過濾, 只顯示實際的設定項目, 可以用 grep 過濾以下的行: — 空白行, 即沒有任何內容 — …

Shell Script 檢查系統帳號是否存在

在 Shell Script 想檢查系統帳號是否存在, 可以用 grep 搜索 /etc/passwd 的內容達成, 指令是這樣: 以上指令會檢查 /etc/passwd 檔案內, 是否有 “useraccount” 這個帳號存在, 其中 “^” 表示指定前面沒有任何字元, 而 “:” 則是在 /etc/passwd 用作分開每個欄位的分隔字元。 上面指令執行後, 如果帳號不存在, 不會回傳任何內容, 如果帳號存在, 則會回傳在 …

設定 vsftpd 顯示隱藏檔

近日有一台主機的其中一位使用者反應, 用 FileZilla 登入 ftp 想刪除一個目錄, 卻回傳以下錯誤: 550 Remove directory operation failed 查看了一下, 這個目錄的 owner 是該名使用者沒錯, 用 “ls” 看目錄是空白的, 然後用 “ls -a” 再看一次, 發現有一個 “.htaccess” 存在, 一般上以一點 “.” 開頭的檔案被視為隱藏檔, …

sysctl 讀取 / 修改 Kernel 變數

Linux 下的 sysctl 指令可以用作檢視及修改執行中的 Kernel 變數, 例如想其中一個變數的數值, 指令是這樣: # sysctl kernel.ostype 回傳結果類似這樣: kernel.ostype = Linux 在 sysctl 後面加上 -a 參數, 會列出所有變數的數值: # sysctl -a 由於變數很多, 配合 grep 可以更有效找到想要的變數, 例如以下會列出有 …

PHP 5.4 或以上重現 Register Globals

很久以前的 PHP 預設開啟 Register Globals 選項, 這樣寫程式就很方便, 但這個方便也帶來安全性問題, 所以後來 PHP 預設會將 Register Globals 關閉, 對於一些要開啟 Register Globals 的程式, 在不修改程式碼的情況下, 還可以透過修改 php.ini 或 .htaccess 的方法解決。 但在 PHP 5.4 開始, PHP …

Crontab 每月最後一天執行 Shell Script

Crontab 自動執行可以設定在每月的某一天執行, 如果遇到需要在每個月最後一天執行一次的情況, crontab 則沒有這個功能, 這時可以用 Shell Script (其他語言的做法也一樣) 檢查今天是否當月最後一天來解決, 以下是具體做法。 首先建立一個 Wrapper Script, 加入以下內容: wrapper.sh 這個 Wrapper Script 很簡單, 第三行會取得明天的日期並放到 $DAY 變數, 然後檢查 $DAY 是否 1, 如果明天的日子是 1 …