Tag: RHEL & CentOS

CentOS 7 變更 SSH 埠號 (+SELinux 設定)

以資安的角度,一般上建議將 SSH 預設的 22 埠號變更為其他埠號,而選擇埠號時則盡量使用 1024 以上的埠號,以及不要與其他系統服務的埠號相撞。 RHEL 及 CentOS 的 SSH Server 設定檔是 /etc/ssh/sshd_config, 以下會設定 SSH 的埠號為 2202, 先開啟 SSH 設定檔: # vi /etc/ssh/sshd_config 找到以下一行: # Port 22 …

crontab 每 30 秒自動執行

crontab 容許最少自動執行間隔為 1 分鐘, 即在 crontab 的格為是: 如果需要將自動執行時間設定為少於 1 分鐘, 或者以秒數為單位, 可以透過 crontab 配合 sleep 指令完成, 或者建立一個 shell script 再配合 sleep 實現。 以下會示範在 crontab 或 shell script, 設定每 30 …

手動設定網址與 IP 對應 — /etc/hosts

Unix Like 系統在向 DNS 查詢網址與 IP 對應前, 會先查詢檔案 /etc/hosts 的內容, 下文會介紹 Linux 的 /etc/hosts 檔案, 及手動設定網址與 IP 對應的方法。 方法同樣適用於 Mac OS X 及 Windows, 格式是一樣的, 只是檔案位置不同, 它們的位置在: Linux: /etc/hosts …

防止 Shell Script 重複執行

Shell Script 對日常系統維護很實用,對於多用戶系統,Shell Script 經常面對一個問題是重複執行,即一個 Shell Script 正在執行時,避免另一個使用者執行。另一個情況是,當 Shell Script 變得複雜及龐大時,放到 crontab 定時執行時 (例如每分鐘執行一次),Shell Script 還未完成上次的執行,就重複自動執行一次。 要防止 Shell Script 重複執行,一般上會用 lock file 及 PID 的方法,不論是 lock file 還是 PID,除了用 …

解決 bash: scp: command not found lost connection

scp 可以在透過 SSH 加密下, 在本機或兩台主機間複製檔案, 今天執行 scp 時出現以下錯誤: 主機原來已經有安裝 scp, 為何會出現 “command not found” 呢? 而且如果沒有安裝 scp, 應該不會出現要我輸入遠端主機密碼的提示, 再細心想一想, 原來只是自己太大意。scp 在兩台主機間複製檔案時, 需要在兩邊都有安裝好 scp, 而遠端主機是新安裝的, 沒有安裝 scp. 用 SSH 登入遠端主機, …

解決 Nginx 504 Gateway Time-out

當 Nginx 發生 504 Gateway Time-out 時, 一般上原因是一些程式執行需時較長時間, 當執行時間超出 Nginx 的限制時, 便會出現 504 Gateway Time-out 問題, 如果排除了程式上的問題, 解決方法是將執行時限延長 (或者升級主機的硬體也可以)。 首先開啟 Nginx 的網站設定檔, Nginx 將網站設定檔都放在 /etc/nginx/ 目錄下, 下面以 www.phpini.com 為例: …

rsync 透過 SSH 傳送檔案

rsync 是十分好用的同步備份工具,rsync 預設傳輸時不會加密,但其實 rsync 是支援 SSH 傳輸檔案,以下是 rsync 透過 SSH 同步檔案的方法: 從本機用 rsync 透過 SSH 複製檔案到遠端: 在 rsync 加上參數 “-e” 可以自訂通訊協定,後面加上要用的通訊協定即可。 # rsync -avzhe ssh my_backup.tgz username@192.168.1.100:/backups/ username@192.168.1.100’s password: …

同時安裝多個 PHP 版本

現在 PHP 其中一個很大的問題, 是很多個不同的 PHP 版本都有人使用, 對於開發者需要顧及程式碼是否可以在不同版本執行, 而對系統管理員, 就要面對不同程式可能需要不同 PHP 版本。 以下記錄一下在系統安裝不同 PHP 版本, 並可以按需要設定不同 Virtualhost 或目錄, 可以使用不同 PHP 版本的方法, 以下會以 CentOS 7 及 Apache 作為安裝環境。 首先在系統用 YUM 安裝好 …

Linux 的 useradd 實用例子

Linux 下的 “useradd” 指令用作建立新帳號, 當執行 useradd 指令時, 它會完成以下工作: — 編輯 /etc/passwd, /etc/shadow, /etc/group 及 /etc/gshadow 檔案, 加入新帳號的內容. — 為新帳號建立家目錄. — 設定新帳號家目錄的權限及 owner. 執行 useradd 建立帳號時, 如果沒有指定參數, 會用系統的預設值建立帳號, 以下是建立帳號時改變預設值的例子。 建立新帳號 …

Shell Script 連接 MySQL 安全寫法

在 Shell Script 連接 MySQL, 可以用以下語句實現: $ mysql -u db_user -pdb_password db_name -e ‘sql_query’ 如果系統內沒有其他使用者,這個方法沒什麼問題,但如果系統有其他使用者,在執行 Shell Script 時,其他使用者便可以用 ps 這類指令,看到正在連接 MySQL 的使用者名稱及密碼。 較安全的方法是將 MySQL 使用者名稱及密碼儲存到家目錄的 .my.cnf 檔案,那便不用在 Shell Script …