# 顯示當前路徑 (print working directory)
$ pwd
# 顯示硬碟使用狀況與剩餘空間 (disk free)
$ df
-h --human-readable # 以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示
-k --kilobyte # 以 KB 顯示
-m --megabytes # 以 MB 顯示
# 顯示某個目錄使用容量 (disk usage)
$ du <directory path>
-h --human-readable # 以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示
-s --summarize # 將目錄內容容量加總
# 顯示當前目錄內容 (list)
$ ls
-a --all # 列出所有檔案
-i --inode # 顯示各檔案的inode
-l # 以較長的格式顯示,包含存取權限、連結數目、擁有者、大小、最後更動時間等
-n --numeric-uid-gid # 列出檔案,以 UID 和 GID 顯示
# 顯示當前目錄內容 (directory),為了相容 Windows 指令
$ dir
# 切換到當前目錄 (change directory),可以是絕對路徑或相對路徑
$ cd <directory path>
# 將檔案內容連續印出 (concatenate)
$ cat <file path>
# 將檔案內容反向印出
$ tac <file path>
# 逐頁翻動,只能向下
$ more
space 鍵 # 向下一頁
enter 鍵 # 向下一行
/<string> # 向下搜尋此字串
:f # 顯示檔名.目前行數
b # 往回翻頁 (讀檔有效,管線無效)
q # 離開
# 逐頁翻動,還能向上
$ less
space 鍵 # 向下一頁
page up 鍵 # 向上一頁
page down 鍵 # 向下一頁
/<string> # 向下搜尋此字串
?<string> # 向上搜尋此字串
n # 向下重複前一個字串搜尋
N # 向上重複前一個字串搜尋
g # 捲到第一行
G # 捲到最後一行
q # 離開
# 取出前面十行
$ head
-n <number> # 指定顯示幾行
# 取出後面十行
$ tail
-f # 持續偵測檔案,直到按下 Ctrl + C 離開
-n <number> # 指定顯示幾行
# 建立空檔和時間標記
$ touch
# 內部連線
$ ssh <username>@<CentOS ip>
$ ssh [email protected]
# 切換成 root 使用者 (switch user)
$ su -
$ cat /etc/passwd
$ cat /etc/passwd | more
$ cat /etc/passwd | less
$ head -n 5 /etc/passwd
$ tail -n 5 /etc/passwd
# 觀察系統所有程序 (process status)
# 全面搜尋正規表示式 (global search regular expression)
$ ps aux | grep <process id / process name>
$ ps aux | grep vim
$ ps aux | grep firefox
# 觀看執行程序,以樹狀圖表示 | 翻頁
$ pstree | more
# 停止程序
# -2 通知程式停止執行 (Ctrl + C)
# -9 立刻強制停止程式執行
# -15 以正常的程序通知程式停止執行 (預設)
$ kill -9 <process id>
# 動態偵測程序變化
# -b 以批次的方式執行,通常會搭配資料流重導向,將批次的結果輸出成為檔案
# -n <次數> 偵測次數
$ top -b -n 1 > top.txt
# 顯示最耗效能的程式
# awk(作者三人名字開頭): 資料處理工具
$ cat top.txt | head -n 8 | tail -n 2 | awk '{print $1,$2,$12}'
# PID USER COMMAND
# <minimum pid> <username> <command>
# 顯示當前登入系統的使用者
$ w # 較詳細
# 22:04:09 up 1:43, 2 users, load average: 0.00, 0.00, 0.00
# USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
# root tty1 :0 20:20 1:43m 9.46s 9.46s /usr/bin/Xorg :
# root pts/0 :0.0 22:03 0.00s 0.01s 0.01s w
$ who
# root tty1 2019-09-29 20:20 (:0)
# root pts/0 2019-09-29 22:03 (:0.0)
$ tail -n 5 /etc/passwd
$ head -n 5 /etc/passwd
$ tail -f /var/log/http/access.log
$ cat /etc/passwd | grep :0:
- tty(終端設備的統稱) >> 新增終端機分頁.視窗
teletypes, teletypewriters
原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱讀和發送信息的東西,後來這東西被鍵盤與顯示器取代,所以現在叫終端比較合適。 終端是一種字符型設備,它有多種類型,通常使用tty來簡稱各種類型的終端設備。
- pty(虛擬終端)
pseudo-tty
但是如果我們遠程telnet到主機或使用xterm時不也需要一個終端交互麼?是的,這就是虛擬終端pty。
- pts/ptmx (pts/ptmx結合使用,進而實現pty) >> Ctrl + Alt + F1 ~ F6
pseudo-terminal slave
pts 是 pty 的實現方法,與 ptmx(pseudo-terminal master) 配合使用實現 pty。
login_name: password: user_id: group_id: user_information: directory: shell
root: x: 0: 0: root: /root: /bin/bash
欄位 | 中文 | 說明 |
---|---|---|
login_name | 帳號 | |
password | 密碼 | 這個欄位應該都是『x』,這是經過加密過的,表示使用 Shadow Security Suite 保護,安全性較高,而真正的密碼存放在 shadow 檔案中。 |
user_id | 使用者id | 這個欄位是數字,每當我們使用 useradd 增加一個使用者時,這個欄位就會自動加一。我們登入系統時雖然是使用『帳號』登入,但是,實際上是使用 user_id 來判斷使用者權限的。 |
group_id | 群組id | 這個欄位也是數字,和 user_id 欄位一樣,每當我們使用 useradd 增加一個使用者時,這個欄位就會自動加一,而這裡的數字可以對照到『/etc/group』檔案,就可以知道這個群組的名稱,預設的群組名稱和使用者名稱相同。 |
user_information | 其他資訊 | |
directory | 主(家)目錄 | 也是使用者登入後的目錄,例如 ntcbimd 的家目錄就是『/home/ntcbimd』。 |
shell | 登入後使用的 shell | 預設是用 bash shell,所以這個欄位應該都是『/bin/bash』,可是,你一定會發現在passwd檔案之中有一些設定是『/bin/nologin』,實際上在系統中是沒有這個 shell 的,這樣設定的目的是不讓這個使用者登入到系統之中。 |
login_name: password: change: short_change: long_change: alert: stop: limit:
root: <encrypted_password>: 17596: 0: 99999: 7: : :
欄位 | 中文 | 說明 |
---|---|---|
login_name | 帳號 | |
password | 加密過的密碼 | 由於這裡的密碼都是經過加密過的,所以我們不能在這裡直接更改密碼。 |
change | 密碼變動時間 | 上次變更密碼時間是距離 1970/01/01 的多少天。 |
short_change | 最短變更時間 | 密碼變更後,距離下次變更時間,至少需要經過多少天,才能再變更。預設值是 0,表示隨時都可以變更密碼,若設為 5 的話,就表示這次變更密碼的話,得再經過5天之後才能再做密碼變更的動作。 |
long_change | 最長變更時間 | 距離上次變更密碼時間,在到達多少天之後,必須再變更一次。預設值是 99999,這樣的日期已經不知道是幾千年後的事,我們是等不到的,所以密碼是不會過期的。若設定 100,那麼,每隔 100 天我們就必須重設一個新的密碼。 |
alert | 警告時間 | 離下次變更密碼到期時間,在幾天之前會提出警告,預設值是 7 天,會在『最長變更時間』到期的前 7 天開始發出警告訊息。 |
stop | 停權時間 | 如果超過『最長變更時間』多少天,還是沒有變更密碼的話,就將該帳號停權,無法登入系統。 |
limit | 有效期限 | 帳號的有效期限可以使用到什麼時候,計算方式是從 1970/01/01 開始,以天數計算,當時間一過,這個帳號就被停止使用了。 |
group_name: password: group_id: username
root: x: 0:
欄位 | 中文 | 說明 |
---|---|---|
group_name | 群組名稱 | 一般而言,使用 useradd 指令建立使用者時,會同時產生一個新的群組,而新的群組名稱會和使用者名稱相同。 |
password | 密碼 | 不會用到。 |
group_id | 群組id | 在 passwd 檔案中的 group_id 就是指到這裡,再透過這個 group_id 而對應到群組名稱的。 |
username | 該群組所包含的使用者 |
useradd <a_login_name>
useradd ntcbimd
- 系統在新增一位新的使用者同時,會在/home 目錄產生一個目錄給新的使用者,增加的目錄是 『/home/ntcbimd』,增加的檔案是 『/var/spool/mail/ntcbimd』。
- 使用者帳號/密碼相關參數:/etc/passwd, /etc/shadow
- 使用者群組相關參數:/etc/group, /etc/gshadow
- 使用者個人檔案資料: /home/username, /var/spool/mail/username ...
- 使用者建立之後,還需要做設定密碼的動作。尚未設定密碼是無法登錄到系統。
- 修改細項請改用 usermod
passwd <login_name>
$ passwd <login_name>
Changing password for user <login_name>.
New password: # 輸入密碼
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password: # 輸入確認密碼
passwd: all authentication tokens updated successfully.
# 修改目前登入帳號的密碼
$ passwd
# 上鎖,會將 /etc/shadow 第二欄最前面加上 ! 使密碼失效 (lock)
$ passwd –l <your_login_name>
# 解鎖,與 -l 相對 (unlock)
$ passwd –u <your_login_name>
- 在輸入密碼時,畫面上看不到任何字元,這是正常的。
- 修改細項請改用 chage
userdel <login_name>
userdel
-r 連同家目錄 /home/ntcbimd & 電子郵件 /var/spool/mail/ntcbimd 一起刪除
- 需要系統管理員 root 權限