呼呼~~這次的作業真的超難的
level2的果然不一樣
麻煩老師了~~
* 思考與練習:
1) 請說明一下 suid, sgid, sticky bit 對於 file 及 directory 的影響?
說明:
suid> file:uid from file
dir:ignore
sgid> file:gid from file
dir:new file from dir
new dir whit sgid(只要設sguid在dir裡,裡面的資料
不管是file or dir都是同一群組suid)
sticky bit> file: ignore
dir: 刪除檔案除了在目錄要有wx的權限外
還有是目錄或檔案的擁有者才了刪除
2) 請問 6754 的 mode ,改用 text 如何表示?
text : rwsr-sr--
若將 rwsr-xr-T 改用 octal 格式呢?
otal:5754
3) 假設:
1. 當前 shell 之 uid 是 u1 ,gid 是 g1 ,且同時在 g2, g3 這兩個 groups,
umask 為033
2. 有一個 pro 程式的 mode 是 6754 ,其 uid 是 u2 ,gid 是 g2
3. 有一個 dir 目錄的 mode 是 2775,其 uid 是 u3,gid 是 g3
現於當前 shell 內跑起 pro,且 pro 會在 dir 內建立一個新目錄(d1)跟一份新檔案(f1)。
請問會成功嗎?(問一)
不會成功(因為pro有設suid,sgid, 因此跑這個程式時,是利用u2,g2下去跑
但在dir下,o的權限為r-x,沒有w的權限不能新增)
若成功的話,請問新目錄跟新檔案的 permission mode, uid, gid 各是甚麼?(問二)
新目錄(d1):不能建立
新檔案(f1): 不能建立
又,你可以直接在當前的 shell 內用 rm 命令將它們刪除嗎?(問三)
不可
4) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chgrp g3 pro
那答案又將如何?
(問一): 會成功
(問二): d1 drwxr-Sr-- (u2,g3)
f1 -rw-r--r-- (u2,g3)
(問三):應該可以^^,因為dir的權限為drwxrwsr-x,且shell的u1有加入g3,
因此g的權限為rws,所以可以刪除
5) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chmod a+w dir
那答案又將如何?
(問一): 會成功
(問二): d1 drwxr-Sr-- (u2,g3)
f1 -rw-r--r-- (u2,g3)
(問三): 可以
6) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chmod 1777 dir
那答案又將如何?
(問一): 會成功
(問二): d1 drwxr--r-- (u2,g2)
f1 -rw-r--r-- (u2,g2)
(問三): 不行,因為shell為u1,因此不為file或dir的擁有者
7) 同習題五,在 root 跑完 chmod a+w 之後還跑了如下命令:
chmod o-x dir
gpasswd -d u1 g3 ,並讓 u1 重新 login 。
那答案又將如何?
(問一): 不會成功
(問二): 不會成功
(問三): 不會成功
請問啥是 shell script? 如何執行之? 請列兩種方法, 並比較彼此的差異.
說明:
shell script 就像演員的講稿,事先寫在一個file裡,再去執行
bash script
chmod +x script > ./script
上面可以打csh、tcsh、sh都可
下面則是要將script的權限x打開才能執行
9) 請問我們寫 shell script 時, 第一行是怎麼寫的? 其功能是甚麼?
說明: #!/bin/bash(先指定我們的shell為bash)
10) 若我用 read A B C 從 STDIN 讀入變數值,
但卻輸入了 1 2 3 4 ,請問 $C 的值是甚麼?
值: 3 4
要是輸入的是 1 2 呢?
值: 空白
11) 請問,在 shell script 中,$1, $2 各代表甚麼意思?
假設#script abc xyz
$1 : abc
$2 : xyz
那,$10 呢?
$10 : 第10個參數
能否說說 $#, $@, 跟 $* 的差別?
說明: $# > 列出個數
$@、$* > 列出全部內容
12) 請問,啥是 Return Value ?
說明: 傳回值(每個comd都有returen value)
如何看到上一個指令的 Return Value ?
命令: $?
13) 請問何種 Return Value 分別代表如下的條件測試:
true : 0
false : 1-255
14) 請問如下的 test 是啥意思?(提示: man test )
-z string (長度為0)
-n string (長度不為0)
string = string (相同)
sring != srting (不相同)
integer -eq integer (=)
integer -nq integer
integer -gt integer (>)
integer -ge integer (>=)
integer -le integer (<)
-d file (file exits and is a dir)
-f file (file exits and is a regular file)
-e file (file exits)
file -nt file (newer)
file -ot file (older)
! expression 相反輸出
expression -a expression 兩者都成立
expression -o expression 兩者之一成立