發表文章

目前顯示的是有「Linux」標籤的文章

[Docker] ls: cannot open directory .: Permission denied 解決方式

今天要將container 裡面的檔案路徑mapping到實體主機的檔案路徑 docker run -it -v /home/user1/storage:/storage centos /bin/bash 時,在container裡的storage下ls卻出現 ls: cannot open directory .: Permission denied ,以下為解決方法: 環境:Linux 解決方式: 在host和container分別查看id -Z: [root@centos-minion share]# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos-minion share]# ls -ldZ /home/share drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/share The container: [root@4ccce73bed9d share]# id -Z id: --context (-Z) works only on an SELinux-enabled kernel [root@4ccce73bed9d share]# ls -ldZ /home/share drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/share 原因就出在SELinux,可以輸入 docker run -it -v /home/share:/home/share:z 或 docker run -it -v /home/share:/home/share:Z 就解決囉! 參考來源: https://github.com/moby/moby/issues/14175

[Certbot / SSL] 簡單步驟教你生成 SSL 憑證

圖片
今早收到了一封主旨為Let's Encrypt certificate expiration notice for domain "xxxxx"的信,才想到,哦!!原來SSL快過期了,來記錄下當初生成SSL的步驟 使用工具: CertBot 環境:Ubuntu 伺服器:Apache CertBot  是 Let’s Encrypt 推薦的憑證生成工具,但是 Let's Encrypt 提供的憑證有效期限每次只有 90 天的效期,若過期之後需要重新更新憑證方可繼續使用,以下為安裝的簡單三步驟 步驟一:下載 wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 步驟二:開始製作憑證 sudo certbot certonly certbot certonly 用 nginx 選擇 standalone,若是 apache 則選擇用 webroot 這裡出現3個選項,簡單介紹這三個項目 1.使用Apache模式 2.使用standalone模式: 預設standalone是使用443 port,需要暫時停止服務器正在占用443 port的process 3.使用webroot模式 如果需要在不影響服務器正常運作的情形下製作憑證,可以選擇webroot模式 步驟三:輸入驗證SSL的網址 enter in your domain name 完成:輸出憑證檔案 執行完的憑證會依照擬申請的domain當作資料夾名稱放到/etc/letsencrypt/live/ 目錄下,例如我申請了www.test.com,憑證檔案會放在/etc/letsencrypt/live/www.test.com/目錄下 憑證介紹: 檔案名稱 說明 cert.pem 申請網域的憑證 chain.pem Let's Encrypt 的憑證 fullchain.pem cert.pem 及 chain.pem 合併檔案 privkey.pem 申請網域的憑證密鑰 參考: Certbot自動化生成https憑證

[Linux ] centos iptables 防火牆設定方法(開啟指定Port)

圖片
今天Linux菜菜小弟需要開啟端口來做websocket,就來記錄下如何開啟iptables port,步驟如下: 1.開啟8080 port,輸入 /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT   即可 2.重新啟動防火牆 /etc/init.d/iptables restart 3. 查看所有port /etc/init.d/iptables status 如上圖表示已經開啟8080 port了

[LINUX COMMAND]解決-bash: php: command not found

今天要執行PHP command時出現bash: php: command not found ,不用荒,將php加入path即可,以下為解決方法 解决方法: export PATH=$PATH:/usr/local/php/bin  (/usr/local/php/bin找到自己php/bin放的位置) 輸入echo $PATH 就可以看見 usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin 在系統上輸入php -v發現可以執行了

[AWS / SSH] 簡單步驟 SSH連線設置

圖片
公司有工程師離職時,是MIS覺得麻煩的時候了,因為要把所有的server ssh key全換掉,雖然步驟簡單,但是server一多是換到手軟,以下以AWS為例,說明ssh key更換步驟 實作環境:Windows 服務:AWS 對新使用者添加ssh key 一、Windows用戶可以先下載 puttygen 打開後,在滑鼠一震搖晃下就會產生一串ssh-rsa key 其中key comment必須謹慎設定,在aws他是對應key pair name,再來分別save public key和private key,將ssh rsa整段copy下來,之後要貼在.ssh/authorized_keys裡,怎麼做呢? 接著往下看 二、替換ssh key 1.進入指定的user資料夾 hone/{user},將ssh/authorized_keys裡的ssh rsa換掉即可 完成後再用新的ssh連新的user試試有沒有成功 2.確認成功後,就可以將AWS上舊的KEY刪掉了 二、在伺服器新增使用者並設定ssh 1.新增使用者 sudo adduser newuser 2.切換到使用者下 sudo su - newuser 3.在home/newuser下,新增 .ssh資料夾 mkdir .ssh 4.給予.ssh 700的權限 chmod 700 .ssh 5. 建立authorized_keys資料夾 touch .ssh/authorized_keys 6.給予  authorized_keys 600權限 chmod 600 .ssh/authorized_keys 7.編輯authorized_keys文件,將剛剛複製的ssh rsa貼入 vi authorized_keys 完成後再用ssh連新的user試試有沒有成功

[MySQL] Centos6.x 解決 MySQL啟動失敗ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql)

不論是啟用service mysql start或是重啟 service mysql restart都會出現 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql)怎麼辦?以下是我的解決方法: 環境: Centos6.7 MariaDB 解決方法: 1.先輸入service mysql status,由於執行失敗,service mysql status會顯示錯誤引導你 service mysql status 2.系統顯示MySQL is not running, but lock file (/var/lock/subsys/mysql),這時候先將這個檔案刪掉試試,輸入 rm var/lock/subsys/mysql 3.在嘗試service mysql restart 4.若還是無法啟用,輸入ps -ef | grep mysql查看process,會看到mysql的process,記住 PID ps -ef | grep mysql 5.輸入sudo kill -9 PID ,-9是強制刪除,指定mysql的PID,刪除process sudo kill -9 PID 6.最後再重啟一次,就行了

[MySQL] 解決 MYSQL MariaDB 登入出現 ERROR 1045 (28000) using password: NO

今天在Linux中輸入指令mysql要進入MariaDB時,卻出現 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的問題,這邊說明我自己的解決方式 環境: Centos6.7 MariaDB 解決方法: 輸入 /usr/bin/mysql_secure_installation初始化 /usr/bin/mysql_secure_installation 接著依序輸入 第一個問題,Enter current password for root (enter for none):。 請直接按下Enter,因為預設MariaDB沒有密碼。 第二個問題,Change the root password? [Y/n]。 是否更改root密碼,極度建議您設定root密碼,請輸入Y。 第三個問題,Remove anonymous users? [Y/n]。 是否移除匿名帳號,請務必移除匿名帳號,否則別人隨便就可以進入您的資料庫了! 第四個問題,Disallow root login remotely? [Y/n]。 是否移除遠端root登入權限,視需求設定,若要允許root遠端登入, 第五個問題,Remove test database and access to it? [Y/n]。 是否移除測試資料庫跟使用者,留著也沒用!移除請輸入Y。 第六個問題,Reload privilege tables now? [Y/n]。 是否刷新權限表,輸入Y完成所有初始化設定! 在嘗試進入一次,輸入 sudo mysql -u root -p 進入,就可以進囉 sudo mysql -u root -p

[Linux] tar - 壓縮/解壓縮語法

以下簡單的介紹: 常用參數 -c 打包一個 tar 檔案 -x 解開一個 tar 檔案 -t 檢視 tar 檔案的內容 -z 使用 gzip 壓縮 -v 顯示建立 tar 檔案的過程 -P 使用絕對路徑 -f 指定 tar 檔案的檔案名稱。此參數的後面要接檔案名稱,因此要注意參數的順序 (通常是把 f 參數寫在最後一個,或者是與其它參數拆開使用) 常用語法 建立壓縮檔 $ tar -czvf 檔案名稱.gz 來源檔案 說明:   將 來源檔案 壓縮後,打包成一個名稱為 檔案名稱.zip 的壓縮檔, 來源檔案 可以是檔案或目錄。 來源檔案也可以有很多個,以空白字元分隔: $ tar -czvf 檔案名稱.gz  來源檔案1 來源檔案2 ... 來源檔案n 檢視壓縮檔的內容 $ tar -tzvf 檔案名稱.gz 解開壓縮檔的檔案到目前的目錄 $ tar -xzvf 檔案名稱.tgz 複製目錄 $ tar -cvf - 來源目錄 | tar -xvf - 說明:將 來源目錄 下的所有檔案及子目錄複製到目前的目錄,這樣做的好處是可以保留原來的檔案屬性。

[Linux] wget - 非互動式檔案下載語法

Wget 是非互動式檔案下載工具,和curl相似。 以下是簡單的例子: $ wget -t0 -c -nH -np -m -P /localdir http://example.com # -t0: 設定重試次數。當連結中斷或超時,wget會重新連接。 # -c:  設定續傳功能。 # -nH: 不建立該網站名稱的子目錄 /example.com/,而直接在當前目錄下建立鏡像的目錄結構。 # -np: 不遍歷父目錄,如果有連結連到目標資料夾的parent或其他目錄,不下載。 # -m:  鏡像,相當同時使用-r和-N。 # -r:  遞迴下載,把文件中所有的連結都下載回來。 # -N:  下載時檢查timestamp,只下載有更新的文件,如果檔案大小和最修改日期都一樣就不下載。 # -P:  指定下載到本機的某個目錄下。

[Linux] cp - 複製檔案目錄指令

cp 是在 Linux (或其他 Unix 系統) 最常用的指令之一,它是用作複製檔案或目錄的指令。 以下是一些 cp 指令的常用例子: 從 /from/filename.txt 複製到 /to/newfile.txt $ cp /from/filename.txt /to/newfile.txt 將檔案 /from/filename.txt 複製到 /to/ 目錄下, 檔案名稱不變: $ cp /from/filename.txt /to/ 複製目錄及裡面全部內容, 需要加上 -R 參數: $ cp -R /from/dir_name /to/ 複製多個檔案, 以下會複製 index.php, info.php 到 /home/phpini/ $ cp index.php info.php /home/phpini/ 把 /var/www/html/ 全部 .php 結尾的檔案複製到 /home/phpini/ $ cp /var/www/html/*.php /home/phpini/ -p 參數會在複決時連同檔案或目錄屬性一同複製,包括檔案時間,Owner 及權限,下面會將 /var/www/html 完整複製到 /home/phpini/ 裡面: $ cp -p /var/www/html /home/phpini/