Linux伺服器 Linux伺服器

伺服器建置實務上課教材

伺服器建置實務 > 課程內容 > 第 2 堂課 - 權限的意義與管理、帳號的建置與管理

第 2 堂課 - 權限的意義與管理、帳號的建置與管理

上次更新日期 2018/10/03

上週的檔案處理流程中,同學應該會發現到,某些檔案使用 student 一般帳號是沒有辦法進行複製與讀取的。 那麼檔案的權限如何觀察?檔案的權限如何修改與相關的意義?另外,既然講到權限了,那麼不同的帳號使用的權限當然不同! 所以,就得要來了解一下基礎帳號的管理 (建置、刪除) 囉!

  • 2.1: Linux 權限基礎
  • 2.2: 權限的管理
  • 2.3: 基礎帳號管理
  • 2.4: 本日練習
  • 2.5: 課後練習

2.1: Linux 權限基礎

Linux 的權限概念目的在於讓『檔案』跟『帳號』有相關性,讓檔案或許能夠在帳號間分享,或者能夠讓帳號保密住該檔案等等的用途。 因此,權限就是設定在檔案上面的項目!簡單說,在 Linux 底下的任何一個檔名 (目錄或一般檔案) 都是一個物件,這個物件誰可以使用,就是重點。 所以,權限的目的,就是在規範:『某一個檔案是誰可以讀取、寫入與執行』的概念!

  • 權限基礎認知:三種身份 - 使用者、群組與其他人

為了方便管理與設定,所以,針對每一個物件 (檔案),Linux 會給予該物件三種身份的權限,分別是『使用者、群組與其他人』。 想像一下,你的家庭。你買的包包是屬於你的,但是可能你的包包會借給你的家人使用,但是不是你自己也不是你的家人可以用嘛? 那就是其他人的權限!於是,這個包包就可以讓你規範成為『我自己、我家人、路人甲乙丙』這三種基本身份的權限囉!

如果以目前年輕人可能經常使用的 Facebook 社團軟體的概念來說,權限概念的使用有點像這樣:

  • 就跟 FB 一樣,你可以將一個訊息 (檔名) 分享給 A 用戶 (使用者) 或是在 B 社團 (群組) 當中發布,而不 A 個人也不是加入 B 社團的其他帳號,當然就是其他人!
  • 因此,你可以想像,所謂的群組就是 FB 成立的社團,目的不在於『社團』而是『加入這個社團的帳號可以做些什麼』, 重點還是在『帳號』上面喔!群組只是讓我們管理員可以快速的做某些檔案權限的設計而已。
  • 總之,針對一個檔案來說,這個檔案會有 (1)所屬帳號 (2)所屬群組與 (3)其他人 的三種身份的權限,使用英文來表示就是:
    • u: user, 使用者
    • g: group, 群組
    • o: other, 其他人
  • 每種身份具有的權限: read, write, execute

以檔案來說,到底你需要檔案的什麼權限呢?好簡單喔!就是讀、寫、執行而已~英文是:

  • r: read, 讀取
  • w: write, 寫入
  • x: executable, 可執行

所以,身份與權限的結果就是:共有三組人,每組人有三個可能的權限,因此就會有 9 個權限 (3X3 的緣故),使用簡單的 rwx 來做解釋的話,就會變成:

  • 全部的權限都存在:   rwxrwxrwx
  • 全部的權限都不存在: ---------

如果用圖示的方法來看,例如當你使用『 ll /etc/hosts 』時,產生這樣的結果:

[student@localhost ~]$ ll /etc/hosts
-rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts

上面的輸出中,特殊字體的部份就是我們要注意的!如果以圖示來說,他會有點像這樣:

權限概念的解釋

共分為七個欄位,其他欄位都很好解釋~但是三種身份與權限的對應是怎麼回事呢?看底下這張圖:

權限概念的解釋
回答下列問題:
  1. 每一個檔案會分配給哪三種身份有各別的權限?
  2. 每一種身份具有哪幾種權限?
  3. 承上,這些權限的英文符號為何?
  4. 用『 ll 』去觀察檔名時,最左邊的字元代表什麼?例如 - 與 d 各別代表什麼?
  • 開始觀察檔案的權限

根據上面的說法,讓我們來看看 /etc/hosts 這個檔案的相關權限屬性:

[student@localhost ~]$ ll /etc/hosts
-rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts

你會發現到幾個事情如下:

  • 該檔名為一般檔案 (不是目錄檔,是一般檔)
  • 該檔名屬於 root 這個帳號的
  • 該檔名屬於 root 這個群組的
  • root 這個用戶具有可讀可寫 (rw-) 的權限
  • 加入 root 群組的所有帳號,具有可讀 (r--) 的權限
  • 不是 root 帳號,也沒有加入 root 群組的其他帳號,具有其他人的可讀 (r--) 的權限。

好像還挺容易的啊!不過,還有一件事要注意,那就是,你怎麼知道 A 帳號有沒有加入 B 群組?舉例來說,系統上面的 student 這個帳號, 有沒有加入 root 群組呢?這個時候就需要使用 id 這個指令來查詢了:

# 1. 查看 student 自己支援的群組有哪些?
[student@localhost ~]$ id
uid=1000(student) gid=1000(student) groups=1000(student) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

# 2. 查看有沒有 vbird 這個帳號?
[student@localhost ~]$ id vbird
id: vbird: no such user

# 3. 查看 bin 這個帳號的支援群組
[student@localhost ~]$ id bin
uid=1(bin) gid=1(bin) groups=1(bin)

gid 後面接的是原生群組,至於 groups 後面接的則是所有群組。如此一來,我們知道 student 並沒有加入 root 群組,因此,對於 /etc/hosts 來說, student 就是其他人 (other) 的權限。

透過相同的方式 (ll 加上 id) ,查詢 /var/spool/mail 的權限屬性為何:
  • 是一般檔案、目錄檔案還是特殊檔案
  • 擁有者是誰
  • 擁有群組為何
  • 擁有者的權限為何?
  • 加入群組的帳號擁有的權限為何?
  • 其他人的權限為何?
  • student 的權限為何?
  • root 的權限為何?
  • mail 的權限為何?
  • 一般檔案與目錄檔案的權限差異

事實上,權限相當的麻煩!上面的觀察只是一個基本的概念而已。你要知道的是,目錄的功能是放置檔案,那麼目錄為什麼需要有『執行 x 』權限? 也就是說,有人在執行目錄的嘛?當然沒有~那目錄的權限到底是什麼?其實,這都要從一般檔案與目錄檔案的『內容』來理解的。

  • 一般檔案的內容就是文字、資料庫、執行程式碼等等,因此, r 為讀取檔案內容, w 為修改檔案內容, x 為讓檔案內容具有執行權的意思。
  • 目錄檔案的內容是檔名,因此 r 為可列出檔名, w 為可修改檔名, x 就是讓用戶進入該目錄成為工作目錄。

若以較人性化的角度來思考,讓檔案變成資料卷宗、目錄變成抽屜,則 rwx 的功能彙整如下表:

元件內容思考物件rwx
檔案詳細資料data文件資料卷宗讀到文件內容修改文件內容執行文件內容
目錄檔名可分類抽屜讀到檔名修改檔名進入該目錄的權限(key)

讀者須注意,目錄的 rw 與『檔名』有關,而檔案的 rw 則與『檔案的內容,包括程式碼與資料等』有關。比較特別的是目錄的 x,該權限代表用戶能否打開抽屜取得該抽屜內的檔名資料。

很難理解嘛?沒關係,現在請開啟兩個終端機,一個用 root 權限,一個用 student 權限,然後觀察一下相關的資料內容:

先用 root 權限進行底下的觀察:

[root@localhost ~]# ll
-rw-------. 1 root root 2166 Jan  3  2017 anaconda-ks.cfg
-rw-r--r--. 1 root root 2214 Jan  3  2017 initial-setup-ks.cfg

[root@localhost ~]# ll -d / /root
dr-xr-xr-x. 20 root root 4096 Jun  6 08:38 /
dr-xr-x---. 17 root root 4096 Oct  2 22:59 /root

回答下列問題:

  1. 針對 /root/initial-setup-ks.cfg 檔名來說, studnet 具有什麼身份?具有什麼權限?
  2. 針對 /root 檔名來說, studnet 具有什麼身份?具有什麼權限?

再用 student 的權限進行底下的觀察

[student@localhost ~]$ ll -d /
[student@localhost ~]$ ll -d /root
[student@localhost ~]$ ll /root
[student@localhost ~]$ cat /root/initial-setup-ks.cfg

請回答上述指令可成功或失敗的原因,主要是因為哪個權限所致?

先以 student 的身份完成底下的任務:
  1. 前往 /dev/shm
  2. 建立名為 student 的目錄
  3. 進入 /dev/shm/student 目錄下
再以 root 的身份完成底下的動作
  1. 觀察家目錄的檔案,應該會有 anaconda-ks.cfg initial-setup-ks.cfg 兩個檔案
  2. 將兩個檔案連同權限資料全部複製到 /dev/shm/student 去
  3. 直接以『 ll /dev/shm/student 』觀察檔案是否順利複製成功
最終以 student 身份來執行底下的任務:
  1. 分別使用 cat anaconda-ks.cfg 及 cat initial-setup-ks.cfg
  2. 分別說明成功與失敗的原因。
  3. 說明 /root/initial-setup-ks.cfg 及 /dev/shm/student/initial-setup-ks.cfg 內容與權限有無不同?
  4. 承上,那 student 對這兩個檔案的權限有無不同?
  5. 承上,那 student 最終具有的權限 (考量上層資料) 有無不同?

2.2: 權限的管理

從上面的分析,現在你知道一個檔案會有三種身份的 rwx 權限,所以共有 9 個權限。此外,你也可以修改 owner, group 的位置的使用者與群組名稱。

管理員有時候需要調整權限,就像前面說的,你有可能要在 Line 或 FB 上面建立社團,然後將社團成員拉進來吧!?然後調整社團的隱私性質吧? 沒錯!在 Linux server 底下也一樣,有時候你要針對你的專題組員進行檔案的共享或隱私,這都需要管理員的處理。因此, 底下我們先以管理員的身份來進行各項練習喔!

  • chown :修改檔案的『擁有者』,就是修改使用者名稱欄位

修改檔案的所屬用戶,使用『 chown 帳號名稱 檔名 』 來處理

[student@localhost ~]$ su -                  (先切換身份,否則無法進行底下的任務)
[root@localhost ~]# cp -a /etc/hosts myfile  (複製檔案並修改檔名)
[root@localhost ~]# ll myfile                (先查看原本的權限資訊)
-rw-r--r--. 1 root root 158 Jun  7  2013 myfile
# 注意,我們要修改的是上面那個特殊字體的 root 位置喔!

[root@localhost ~]# id bin            (看看有沒有 bin 這個帳號的存在,若沒有就會顯示無帳號)
uid=1(bin) gid=1(bin) groups=1(bin)

[root@localhost ~]# chown bin myfile  (更改檔案所屬人)
[root@localhost ~]# ll myfile         (看看有沒有更改成功)
-rw-r--r--. 1 bin root 158 Jun  7  2013 myfile

這樣就改完檔案擁有者的屬性了。現在,請問一下,針對 myfile 來說:

  • student 具有什麼權限?
  • bin 具有什麼權限?
  • root 具有什麼權限?(其實是最特別的概念)

全系統都屬於 root 所有,所以,所有的權限對於 root 來說,都是沒有限制的!

  • chgrp :修改檔案的『擁有群組』,就是修改群組名稱欄位

修改檔案的所屬群組,使用『 chgrp 群組名稱 檔名 』 來處理。另外,你要先知道的是,系統所有紀錄的群組都會在 /etc/group 裡面,因此, 如果你想要事先知道某個 A 群組是否存在於系統中,可以使用擷取指令『 grep 』來處理。

# grep 的基本語法
[root@localhost ~]# grep 'keyword' filename

# 找出 /etc/services 是否存在 https 這個關鍵字:
[root@localhost ~]# grep https /etc/services 
https           443/tcp                         # http protocol over TLS/SSL
https           443/udp                         # http protocol over TLS/SSL
https           443/sctp                        # http protocol over TLS/SSL
oob-ws-https    664/tcp                 # DMTF out-of-band secure web services management protocol
....

# 找出是否有 vbird 這個關鍵字在 /etc/services 檔案內?
[root@localhost ~]# grep vbird /etc/services 

如果有存在關鍵字,那就會有訊息跑出來,如果不存在關鍵字,那就不會有訊息跑出來!很簡單的!那就來觀察檔案的群組變化吧!

# 先檢查一下是否有存在 sshd 這個群組名稱在系統上?
[root@localhost ~]# grep sshd /etc/group  (確認一下有沒有 sshd 這個群組的存在呢?)
sshd:x:74:   (恩!是存在這個群組沒問題!)

[root@localhost ~]# ll myfile             (再次觀察群組欄位的資料)
-rw-r--r--. 1 bin root 158 Jun  7  2013 myfile

[root@localhost ~]# chgrp sshd myfile     (群組直接去設定,若無群組就會回報錯誤)
[root@localhost ~]# ll myfile             (再次查看有沒有成功)
-rw-r--r--. 1 bin sshd 158 Jun  7  2013 myfile

這樣就改完檔案群組的屬性了。現在,請問一下,針對 myfile 來說:

  • student 具有什麼權限?
  • bin 具有什麼權限?
  • sshd 具有什麼權限?
  • chmod :修改三種身份的個別權限

因為有三個人,每個人有 rwx ,如果 r 是 4 分, w 是 2 分,x 是 1 分時,那麼每個身份會有一個分數,最低分就是 0 ,最高分就是 7,因此, 依據 『使用者、群組、其他人』 的權限排列,最低分為 『000』 ,最高分為 『777』 這樣。

  • 全部的權限都存在:   rwxrwxrwx: 777
  • 全部的權限都不存在: ---------: 000
  • 某些權限存在的情況: rwxr-x---: 750

修改檔案的權限,使用『 chmod 權限分數 檔名 』 來處理

[root@localhost ~]# ll myfile
-rw-r--r--. 1 bin sshd 158 Jun  7  2013 myfile

[root@localhost ~]# chmod 764 myfile
[root@localhost ~]# ll myfile
-rwxrw-r--. 1 bin sshd 158 Jun  7  2013 myfile

這樣就改完權限的屬性了。現在,請問一下,針對 myfile 來說:

  • student 具有什麼權限?
  • bin 具有什麼權限?
  • sshd 具有什麼權限?
完成底下的實做:
  1. 你要在 /dev/shm/perm/ 底下,將 /etc/hosts 複製成為 /dev/shm/perm/check.txt 檔案
  2. 在 /dev/shm/perm 底下,將 check.txt 檔案的權限修改成為如下的模樣:
    • bin 為擁有者,且具有 rwx 的權限
    • mail 為擁有群組,且具有 rx 的權限
    • 其他人只有讀取的權限
  3. 每個步驟完成後,請立即查閱才好!

2.3: 基礎帳號管理

管理員一定會更動到系統的帳號與權限,例如我們要建立專題同組員的聯繫,就需要用到帳號管理。而一般最簡單的帳號管理,就是 (1)建立帳號, (2)給予密碼這兩個動作而已,不要想的太難。只是,如果還需要類似 Line 的建立聊天室,就需要建立共同群組囉!

  • 帳號的建立

當我們登入系統時,會輸入的資訊有帳號與密碼,因此,建立新的帳號也一樣,需要的就是帳號名稱與密碼資料。 此外,當帳號建立後,該帳號會主動的在 /home 底下建立一個相同帳號名稱的目錄,作為該帳號的家目錄。

帳號的管理方式:記得,要有帳號與密碼喔!

  • 帳號:帳號的建立使用 useradd 來處理,請先 useradd --help 查看可以加的選項,之後使用『 useradd 帳號名稱 』
  • 密碼:密碼的給予使用 passwd 來處理,直接『 passwd 帳號名稱 』即可
# 基本語法:
[root@localhost ~]# useradd 帳號名稱
[root@localhost ~]# passwd 帳號名稱

# 嘗試建立一個名為 myuser1 的帳號,密碼為 hehepw01
[root@localhost ~]# id myuser1
id: myuser1: no such user   (確定現在是沒有這個帳號的)

[root@localhost ~]# useradd myuser1  (開始建立帳號)
[root@localhost ~]# passwd myuser1   (開始給予此帳號一個密碼,但是要輸入兩次)
Changing password for user myuser1.
New password:   (這裡輸入一次)
Retype new password:  (這裡再輸入一次)
passwd: all authentication tokens updated successfully.

[root@localhost ~]# id myuser1
uid=1001(myuser1) gid=1001(myuser1) groups=1001(myuser1)

最後建議還是要用 id 這個指令來確認一下該帳號是否順利的建置妥當較佳。

請使用同樣的方式,建置如下的帳號/密碼:
  • 帳號名稱: mystd1
  • 密碼內容: hahapw11
  • 帳號的刪除方式

記得使用 userdel -r 這個 -r 的選項才行!,刪除直接用『 userdel -r 帳號名稱』 即可。 但是不要隨意刪除帳號,除非你知道自己是在幹麻,否則系統預設的帳號千萬不要惡搞!

# 刪除帳號的語法:
[root@localhost ~]# userdel -r 帳號名稱

# 刪除剛剛建立的 myuser1 這個帳號
[root@localhost ~]# id myuser1           (再次確認有沒有這個帳號)
uid=1001(myuser1) gid=1001(myuser1) groups=1001(myuser1)

[root@localhost ~]# ll /home
drwx------.  3 myuser1 myuser1   78 Oct  3 12:00 myuser1  (確認有這個用戶的家目錄)
drwx------. 14 student student 4096 Oct  2 11:29 student

[root@localhost ~]# userdel -r myuser1   (就刪除吧!)
[root@localhost ~]# id myuser1           (確認應該是不存在囉!)
id: myuser1: no such user

[root@localhost ~]# ll /home             (確認家目錄也不在囉!)
drwx------. 14 student student 4096 Oct  2 11:29 student

事實上只有一個指令,就是『 userdel -r myuser1 』就搞定了!為啥要搞的這麼複雜?這都是為了要理解這些指令背後的意義啦! 也方便未來出問題,你可以快速的找到答案!

請依據相同的方法,刪除名為 mystd1 的帳號
  • 群組的管理

加入使用者到某個群組或移除的方式

  • 增加群組使用:『 groupadd 群組名稱 』
  • 將某個用戶加進這個群組:『 usermod -a -G 群組名稱 帳號名稱 』,完成後使用『 id 帳號名稱 』檢查即可
# 基本語法的說明
[root@localhost ~]# groupadd  群組名稱
[root@localhost ~]# usermod -a -G 群組名稱 帳號名稱
[root@localhost ~]# id 帳號名稱                     # 重點在觀察有沒有更改成功

假設我們要建立一個新的群組,名稱為 mygroup 好了,然後將 student 加入這個群組當中。執行的流程會有點像這樣:

[root@localhost ~]# grep mygroup /etc/group  (先檢查有沒有這個群組的存在,沒有訊息是好訊息)
[root@localhost ~]# groupadd mygroup         (增加這個群組名稱)
[root@localhost ~]# grep mygroup /etc/group  (再次檢查,這次則是必需要看到輸出訊息)
mygroup:x:1001:

[root@localhost ~]# id student               (先檢查 student 的支援群組)
uid=1000(student) gid=1000(student) groups=1000(student)

[root@localhost ~]# usermod -a -G mygroup student
[root@localhost ~]# id student               (再檢查一次囉!)
uid=1000(student) gid=1000(student) groups=1000(student),1001(mygroup)

群組的刪除則用『 groupdel 群組名稱 』即可!例如,將剛剛的群組刪除看看。

[root@localhost ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),1001(mygroup)

[root@localhost ~]# groupdel mygroup
uid=1000(student) gid=1000(student) groups=1000(student)

刪除很快速喔!

帳號、群組管理綜合練習
  1. 帳號的建立:
    • 建立一個名為 alex 的帳號
    • 密碼請設定為 'GoGo123_' 這樣 (英文大小寫、數字、符號搭配)
  2. 群組的建立與分配:
    • 建立一個名為 mypro 的群組
    • 並且將 alex 加入到這個群組當中。
  3. 帳號的額外目錄利用:
    • 建立名為 /srv/alex/ 的目錄
    • 讓這個目錄屬於 alex 擁有,且擁有群組為 mypro
    • 且 alex 具有完整的權限,且加入 mypro 的用戶具有 rx 的權限,其他用戶無權限
  4. 帳號的實際使用:
    • 按下 [ctrl]+[alt]+[F2] 來到文字畫面,使用 alex 登入看看
    • 登入後,按下 w, whoami, pwd 看看相關的帳號登入與訊息
    • 前往 /srv/alex 並且嘗試將 /etc/hosts 複製到本目錄,並觀察檔案權限
    • 最終請登出 alex 用戶
    • 按下 [ctrl]+[alt]+[F1] 回到原本的圖形畫面。

2.4: 本日練習

現在來複習一下今日的動作,作為本日的點名與查驗資訊。請在目前的雲端機器上面完成底下的實做,要完成且讓老師檢查完畢後,才可以離開教室喔!

本日的練習請記得使用 root 的權限來處理

  1. 帳號建置:
    1. 建立 myuser1, myuser2, myuser3 三個帳號
    2. 且三個帳號的密碼都是 iamuser1 這樣
  2. 群組建置與管理:
    1. 建立名為 myproject 的群組
    2. 將這三個帳號加入 myproject 群組的支援當中
  3. 共享目錄的建置:
    1. 在 /srv 底下建立名為 project 的目錄
    2. 該目錄屬於 myproject 群組,且加入 myproject 的用戶具有 rwx 的完整權限,其他人則沒有任何權限,無法進入該目錄!
  4. 實際用戶的操作練習
    1. 在 tty2 嘗試使用 myuser1 進入 /srv/project ,並複製 /etc/hosts 成為 /srv/project/myuser1
    2. 在 tty3 嘗試使用 student 進入 /srv/project,看看結果是如何?
  5. 資料檢查:
    1. 請按右上角的設定,去啟動網路
    2. 使用 ifconfig 這個指令,找出你的 IP 後,告訴老師你的 IP 號碼 (例如 172.16.8.8),老師會線上檢查你是否完成作業了!

2.5: 課後練習

請撰寫一個 word 檔案,檔名為:『 unit02-A050cxxx-你的名字.docx 』,內容回答下列問題,然後每週作業上傳到對應的 EP 上面去:

  1. 檔案權限的概念:
    1. 傳統 Linux 的檔案中,針對『使用者身份』來說,每個檔案會有哪幾種分份的權限設定?
    2. 承上,每一種身份具有哪幾種權限?分別用中文、英文與代表權限的符號說明
    3. 觀察 /var/spool/at 這個檔名,並且回答 (1)是一般檔案還是目錄檔案? (2)擁有者 (3)群組 (4)權限是幾分
    4. 你想要觀察 daemon 這個帳號的 UID 與 GID,應該用什麼指令查詢?
    5. 修改一個檔案的擁有者,是用哪個指令?
    6. 修改一個檔案的群組名稱,是用哪個指令?
    7. 修改一個檔案的權限 (rwx),是用哪個指令?
    8. 帳號的建置需要哪兩個指令的支援?
    9. 群組的建置是使用哪一個指令?
  2. 系統整理:
    1. 將 tty2, tty3 登入的帳號登出,讓系統保持只有 tty1 才有登入的狀態
    2. 刪除剛剛建立的 mypro, myproject 等群組
    3. 刪除剛剛建立的 alex, myuser1, myuser2, myuser3 等帳號
    4. 刪除剛剛建立的 /srv/alex, /srv/project 等目錄
  3. 群組、帳號的管理
    1. 新增名為 prouser1, prouser2 這兩個帳號,且密碼均為 hehepw12
    2. 新增 progroup 群組,且將 prouser1, prouser2 加入此群組當中
    3. 完成之後使用『 id prouser1; id prouser2; ll /home 』檢測,然後將結果拍照貼上
  4. 共享目錄的建置
    1. 建立名稱為 /srv/prodir/ 目錄,此目錄可以提供給 progroup 的群組內帳號完整使用,其他人則無任何權限。
    2. 完成後請輸入『 ll /srv 』檢測,然後將結果拍照貼上
  5. 實際操作
    1. 透過 root 帳號,切換身份成為 prouser1 ( su - prouser1 )
    2. 切換工作目錄到 /srv/prodir/ 去
    3. 將 /etc/crontab /etc/cron.d 複製到當前的工作目錄下
    4. 用 vim 打開 /srv/prodir/crontab ,第一行加入你的學號與姓名,完成之後儲存離開
    5. 在 /srv/prodir/ 裡面執行『 id; ll -R . ; head -n 5 crontab 』,將輸出的結果拍照貼上。

同場加映:不用上傳的資料,請 google 一下打字時,手指與鍵盤指法的對應,然後自由練習底下的資訊:

  • 小寫的 a~z (abcdefg...xyz) ,共打 10 次
  • 小寫的 0~9,a~z (012..89abcdefg...xyz) ,共打 10 次
  • 不要啟動大寫燈,用組合按鍵輸入 A-Z (ABCD...XYZ),共 10 次

每天上課各練一次,最慢 10 天,你的打字就會嚇嚇叫了!