Category Archives: System Administration

GNU readline cheatsheet

在 Linux環境中,command line如bash或是interpreter如python常常有支援readline的keymap,以下整理常用的快速鍵,其他可參考以下連結 https://en.wikipedia.org/wiki/GNU_Readline 移動游標 Ctrl + f : move forward 1 character → Ctrl + b : move backward 1 character ← Alt + f : move forward 1 word Alt + b : move backward 1 word Ctrl … Continue reading

Posted in System Administration | Leave a comment

linux ls -l

整理一下 ls -l 相關的內容意義 ls -l 預設顯示第一欄是file type/ permissions / attributes, 第一各字元是file type,d代表 directory,l代表 symbolic link, 在linux中總共有7種file type,分別是 – : regular file d : directory l : symbolic link c : character device file b : block device file s : local socket file p : named … Continue reading

Posted in System Administration | Leave a comment

sudo note

在Linux中,使用者取得root權限執行可以透過sudo 或是 su root (直接切換成root),差別是sudo 是不需要知道root密碼的,並且可以透過定義sudoer限制可使用的命令。修改/etc/sudoers,透過visudo command 在CentOS中, 定義了 wheel group有sudo權限,可將使用者直接加入wheel群組 usermod –aG wheel username 上面除了定義wheel群組,也定義了root使用者,當然root本身就具有最高權限了,會在sudoers定義最主要是因為讓root不會因為用sudo命令被擋下來 例如將 root那行註解後,(以root身分) 輸入 sudo ls會失敗 在Ubuntu中,則是定義了admin 和 sudo group,不過admin group是早期Ubuntu 11及之前在使用的,在Ubuntu 12後不使用 如過要讓使用者sudo 時不需再輸入密碼,可以在檔案的最後面加上 user ALL=(ALL) NOPASSWD:ALL 如果不在最後面加上,則會以最後一筆match的設定apply,以ubuntu預設建立的使用者來說,會自動加進sudo group,所以會導致上面的設定被override When multiple entries match for … Continue reading

Posted in System Administration | Leave a comment

docker-compose project name

docker-compose透過docker-compose.yml檔案描述的方式,操作docker container,特別是multi containers的情境,讓使用和管理上變得很容易,不過需要注意的是 docker compose是透過project name來識別要操作的container,例如啟動、停止等。 一般來說,啟動就只要下docker-compose up就可以,不同的container是isolated,但是在某些情境,對於不同的docker-compose.yml下 docker-compose up有可能會互相干擾,例如以下,起始一個container name為testm2 docker instance 在另一個資料夾下的啟動testm3 上面出現了recreating testm2,查看container list,testm2消失,取代的是testm3 而原來testm2也顯示被踢掉了 這表示testm2被停掉,主要的原因是project name相同 直覺上會覺得container name不同應該就會不會衝突,事實上docker compose是透過project name來管理,參考: https://docs.docker.com/compose/ The default project name is the basename of the project directory. You can set a … Continue reading

Posted in System Administration | Leave a comment

yum repo sync to local

要複製remote yum repo到local有兩種方式 rsync reposync 但不是所有的remote repo都提供rsync存取權限,例如vault.centos.org就無法使用(https://lists.centos.org/pipermail/centos-mirror/2013-April/007069.html 裡面提到將rsync關掉了) https://vault.centos.org/readme.txt The Following External Vault mirrors (not monitored by the CentOS Infra team !) also provide direct downloads for all content, including isos and rsync access: USA: http://archive.kernel.org/centos-vault/ rsync://archive.kernel.org::centos-vault/ Europe: http://mirror.nsc.liu.se/centos-store/ rsync://mirror.nsc.liu.se::centos-store/ … Continue reading

Posted in System Administration | Leave a comment

CentOS 6 docker yum更新

在centos 7環境下跑centos 6 docker image docker run -it centos:6 下 yum update 報錯,顯示無法retrieve repomd.xml 確認一下原因,主要是因為 centos 6在2020 Nov就停止支援了,參考https://forums.centos.org/viewtopic.php?t=72710 Red Hat have pulled the plug on RHEL 6.x as of Nov 30th 2020 and as a result CentOS 6 is now … Continue reading

Posted in System Administration | Leave a comment

rsyslog in docker environment

在docker中,預設沒有啟用systemd所需要的 CAP_SYS_ADMIN  privileged capabilities,因此在執行服務時,一般採用直接執行process的方式而不透過systemd控制(systemctl) 不過rsyslogd在CentOS預設是透過journald讀取syslog,journald在systemd的架構下主要處理來自systemd service的stdout/stderr、以及syslog(透過/run/systemd/journal/dev-log,並將/dev/log symlink到前述位置),以及處理systemd forward log到 /run/systemd/journal/syslog (須設定ForwardToSyslog開啟,新版本的rsyslogd已經直接讀取journal,不再使用此方式) 如果要跑journald則需要對docker另外開一些capabilites(可參考systemd的service裡面的CapabilityBoundingSet設定,雖然部分應該是處理kern log),另外要處理listen unix socket的設定(描述在/lib/systemd/system/systemd-journald.socket、/lib/systemd/system/syslog.socket) ,因此最簡單的方式就是直接讓rsyslog listen unix socket /dev/log,並且如果不用systemd,單純使用syslog的話沒有理由需要透過journald來處理。 在/etc/rsyslog.conf 將所有journald相關的設定註解,並且開啟imuxsock 並且刪掉 /etc/rsyslog.d/listen.conf 啟動rsyslogd就可以正常運行將syslog寫入到對應的log檔 以 logger測試 值得一提的是 因為透過imuxsock 模組讀取log,是透過 /dev/log unix socket 讀取log 而這個socket是由 rsyslogd產生的,logger預設也是寫入此socket 可參考 util-linux/logger.c 另外docker執行時,一般習慣上是用foreground執行,rsyslogd預設是會跑在背景,並且會做fork,這對於在整合一些process manager如supervisor或是chapterone的工具無法正確追蹤process是否正確執行,或是要設定專門的rsyslog … Continue reading

Posted in System Administration | Leave a comment

CentOS 7 routing metric modification

nmcli connection modify “enp3s0” ipv4.route-metric 200 綁定多張網卡在同網段時,系統預設會加上route,透過metric的設定可以相規則排序。 範例中透過nmcli將enp3s0的metric設成200 可以看到以下 /etc/sysconfig/network-scripts/ifcfg-enp3s0 的IPV4_ROUTE_METRIC被設定為200,設定完需重新啟動network service

Posted in System Administration | Leave a comment

scp from remote to local

要透過ssh從遠端複製檔案到local 有很多工具可用,例如sftp, scp,rsync over ssh sftp 透過get -r 可以recursively抓下整個資料夾 這邊介紹使用scp方式 scp -p -r remote_server:/dir_path local_path 上面的 -p 是保留檔案的modified time,不然預設複製回來時,檔案時間會是複製時的寫入時間 如同cp一樣,前面的參數是 src 後面是 dest,一般我們在使用scp常常是將local 檔案copy到remote: scp -r local_dir remote_server: 用法其實很類似,只是src和dest的位置交換了。 其實透過rsync可以更方便的同步資料夾,特別是要檢查檔案時間改變才更新下載時 ref:https://unix.stackexchange.com/questions/105140/how-to-copy-only-new-files-using-scp-command/205018

Posted in System Administration | Leave a comment

ssl cert – EasyRSA

要產生自簽憑證,可以透過openssl command的方式產生ca, 用ca簽發憑證,不過步驟繁瑣,透過EasyRSA可以快速地完成 https://github.com/OpenVPN/easy-rsa 目前最新版是3.0.7,網路上有些介紹使用v2版本,此處介紹v3版本 解開EasyRSA-3.0.7.tgz 需要修改的是vars檔案,先將vars.example改成vars 裡面的設定大部分使用預設值即可,以下跟機構相關資訊一般會修改,憑證有效時間也可以修改,預設CA是3560天。 set_var EASYRSA_REQ_COUNTRY “US”set_var EASYRSA_REQ_PROVINCE “California”set_var EASYRSA_REQ_CITY “San Francisco”set_var EASYRSA_REQ_ORG “Copyleft Certificate Co”set_var EASYRSA_REQ_EMAIL “me@example.net”set_var EASYRSA_REQ_OU “My Organizational Unit” 設定完後首先初始化pki ./easyrsa init-pki 建立CA ./easyrsa build-ca 產生server csr & key, client csr & key … Continue reading

Posted in System Administration | Leave a comment