台北班
這幾題是我比較有疑問的題目,希望各位大大可以解題一下
chap17
20) 請問 function 又叫甚麼?
名稱:
請問 $0 在 function 中會被替換為甚麼?
老師!我不瞭解 這題$0 在 function 中會被替換為甚麼?可以提示一下嗎
21) 能否說一下 login shell 一開始時會幫你跑哪些 script 嗎?
(提示: 追蹤一下 script 裡的 source 路逕)
說明: 會先讀 /etc/profile 再讀~/.bash_profile or ~/.bash_login or ~/.profile
同樣的, 執行一個 non-interactive shell 又如何?
說明: 我查看man bash ,查到是它會去找 ''$BASH_ENV'',如果有這個值,就source 這個路徑 . ''$BASH_ENV''
chap15
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)。
請問會成功嗎?(問一)
(會/不會)
若成功的話,請問新目錄跟新檔案的 permission mode, uid, gid 各是甚麼?(問二)
新目錄(d1):
新檔案(f1):
又,你可以直接在當前的 shell 內用 rm 命令將它們刪除嗎?(問三)
(可/不可)
我的問題是以pro 程式的 mode 是 6754,根本無法執行,不知道是我對suid不了解,就我對suid的解釋是以mode 是 6754,pro在執行時,user id會自動調至suid,然後不管other的權限是否有r or x,不知這個觀點對不對
我實驗結果是duty沒有權限使用pro,而pro 程式的 mode 如果是 6755,duty可以使用pro,而且uerid 會由duty -->u5
以下是我的實驗過程
我的環境是
login number:duty
pro userid:u5 groupid:g1
關於 pro suid問題
pro程式的 mode 是 6754,但用duty去執行,卻無法執行,異常訊息為無權限
總計 48
8 -rwxr-xr-- 1 root root 4836 3月 25 01:08 a.out
4 drwxr-xr-x 18 duty duty 4096 3月 25 01:21 duty
4 -rw-r--r-- 1 u5 g1 73 3月 22 02:37 hello.c
8 -rwsr-sr-- 1 u5 g1 4735 3月 21 23:11 hellosuid.out
8 -rwsr-sr-- 1 u5 g1 4977 3月 25 01:20 pro.out
8 -rw-r--r-- 1 root root 5082 3月 25 01:37 suidpstree.txt
0 -rwxrwxrwx 1 root root 0 3月 25 01:41 suid.txt
4 drwxrwsr-x 2 u3 g3 4096 3月 25 01:20 use3
4 drwxrwxr-x 2 u5 g1 4096 3月 16 04:52 use5
-bash: ./pro.out: 拒絕不符權限的操作
如果將pro程式的 mode 更改為 6755
總計 52
8 -rwxr-xr-- 1 root root 4836 3月 25 01:08 a.out
4 drwxr-xr-x 18 duty duty 4096 3月 25 01:21 duty
4 -rw-r--r-- 1 u5 g1 73 3月 22 02:37 hello.c
8 -rwsr-sr-- 1 u5 g1 4735 3月 21 23:11 hellosuid.out
8 -rwsr-sr-x 1 u5 g1 4977 3月 25 01:20 pro.out
8 -rw-r--r-- 1 root root 5082 3月 25 01:37 suidpstree.txt
4 -rwxrwxrwx 1 root root 554 3月 25 01:41 suid.txt
4 drwxrwsr-x 2 u3 g3 4096 3月 25 01:20 use3
4 drwxrwxr-x 2 u5 g1 4096 3月 16 04:52 use5
執行pro其uid由duty更改為u5
init(1)─┬─ksoftirqd/0(2)
├─wnck-applet(3032)
├─gnome-terminal(3076)─┬─gnome-pty-helpe(3078)
│ ├─bash(3079)───su(3097)───bash(3098)───su(3130)───bash(3131,duty)───su(3459,root)───bash(3545)───su(+
│ └─bash(3178)
└─login(4872)───bash(4915,duty)───pro.out(5469,u5) <----------------uid
如果將pro程式的 mode 更改為755
總計 68
8 -rwxr-xr-- 1 root root 4836 3月 25 01:08 a.out
8 -rw-r--r-- 1 root root 5107 3月 25 01:44 dfka
4 drwxr-xr-x 18 duty duty 4096 3月 25 01:21 duty
4 -rw-r--r-- 1 u5 g1 73 3月 22 02:37 hello.c
8 -rwsr-sr-- 1 u5 g1 4735 3月 21 23:11 hellosuid.out
8 -rwxr-xr-x 1 u5 g1 4977 3月 25 01:20 pro.out
4 -rw-r--r-- 1 root root 610 3月 25 01:45 q!
4 -rw-r--r-- 1 root root 662 3月 25 01:45 suid
8 -rw-r--r-- 1 root root 5107 3月 25 01:43 suidpstree.txt
4 -rwxrwxrwx 1 root root 1062 3月 25 01:42 suid.txt
4 drwxrwsr-x 2 u3 g3 4096 3月 25 01:20 use3
4 drwxrwxr-x 2 u5 g1 4096 3月 16 04:52 use5
執行pro其uid依然是duty
init(1)─┬─ksoftirqd/0(2)
├─gnome-terminal(3076)─┬─gnome-pty-helpe(3078)
│ ├─bash(3079)───su(3097)───bash(3098)───su(3130)───bash(3131,duty)───su(3459,root)───bash(3545)───su(+
│ └─bash(3178)
└─login(4872)───bash(4915,duty)───pro.out(5515) <----------------uid