作者 主題: 台北班 chap15 and chap17習題  (閱讀 3935 次)

0 會員 與 1 訪客 正在閱讀本文。

jerome0821

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
台北班 chap15 and chap17習題
« 於: 2006-03-25 03:27 »
台北班

這幾題是我比較有疑問的題目,希望各位大大可以解題一下
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
inux and ccna 我來了

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17393
    • 檢視個人資料
    • http://www.study-area.org
Re: 台北班 chap15 and chap17習題
« 回覆 #1 於: 2006-03-25 04:09 »
引述: "jerome0821"
台北班

這幾題是我比較有疑問的題目,希望各位大大可以解題一下
chap17
20) 請問 function 又叫甚麼?
名稱:
請問 $0 在 function 中會被替換為甚麼?

老師!我不瞭解 這題$0 在 function 中會被替換為甚麼?可以提示一下嗎


你要喜歡的話, 叫做函式也行. 或是命名的命令群祖.


引述: "jerome0821"
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''

是的, 若 BASH_ENV 沒有設定, 那就自行指定, 一般會是 ~/.bashrc


引述: "jerome0821"

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

當然囉, user 首先要對 program 有執行權限, 然後才看 effective ID 是甚么.

下節課我們介紹一個 c program, 專門用來產生 new file 的. 到時我們可以再看看.