作者 主題: netman 台北班練習題3-7題  (閱讀 6002 次)

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

alingo

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
netman 台北班練習題3-7題
« 於: 2005-07-27 00:04 »
natman老師我已經照你說的
自己寫了一個binary program來lab這幾題

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 命令將它們刪除嗎?(問三)
(可/不可)
(問一):會成功
(問二):rwxr-Sr-- u2  g3 d1
           rw-r--r--  u2  g3 f1
(問三):可以刪

4) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chgrp g3 pro
那答案又將如何?

(問一):會成功
(問二): rwxr-Sr-- u1  g3 d1,
            rw-r--r--  u1  g3  f1
(問三):可以刪
PS.換完group,pro的permission會變成rwxr-xr--,suid跟sgid會不見耶!!!


5) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chmod a+w dir
那答案又將如何?
(問一):會成功
(問二): rwxr-Sr-- u2  g3 d1,
            rw-r--r--  u2  g3  f1
(問三):可以刪

6) 同習題三,若在執行 pro 之前,root 先跑了如下命令:
chmod 1777 dir
那答案又將如何?
(問一):會成功
(問二): rwxr--r-- u2  g3 d1,
            rw-r--r--  u2  g3  f1
(問三):無法刪

7) 同習題五,在 root 跑完 chmod a+w 之後還跑了如下命令:
chmod o-x dir
gpasswd -d u1 g3 ,並讓 u1 重新 login 。
那答案又將如何?
(問一):無法建立f1跟d1
(問二): x
(問三): x

這個題組有個地方令我比較困惑的,請netman老師指點指點

就是在(第三題)pro這個program有設定suid,sgid。
照定義來看,u1在執行pro, access dir的時候應該是使用u2, g2的權限來
存取dir,而在dir上pro的權限應該是others,(沒有write的權限),但是它還是可
順利create file & directory??? :o

PS.我自己反覆測試的結果,比較合理的解釋為:linux會累加權限,就是會把u1原本的權限再加上suid & sgid的權限來進行存取filesystem
(是不是這樣的呀???)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17403
    • 檢視個人資料
    • http://www.study-area.org
netman 台北班練習題3-7題
« 回覆 #1 於: 2005-07-27 00:35 »
代碼: [選擇]

[netman@www d1]$ id
uid=500(netman) gid=500(netman)
[netman@www d1]$ pwd
/tmp/d1
[netman@www d1]$ ls -ld
drwxr-xr-x    2 netman   netman       4096 Jul 27 00:26 .
[netman@www d1]$ ls -l ../newfile
-rwsr-sr-x    1 kenny    kenny       11725 Jul 27 00:27 ../newfile
[netman@www d1]$ ../newfile
Segmentation fault
[netman@www d1]$ ls -l
total 0
[netman@www d1]$ sudo chmod ug-s ../newfile
Password:
[netman@www d1]$ ls -l ../newfile
-rwxr-xr-x    1 kenny    kenny       11725 Jul 27 00:27 ../newfile
[netman@www d1]$ ../newfile
[netman@www d1]$ ls -l
total 0
-rw-r--r--    1 netman   netman           0 Jul 27 00:34 MY.FILE

alingo

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
netman 台北班練習題3-7題
« 回覆 #2 於: 2005-07-27 10:38 »
:o
netnam老師我照的回覆來測試第三題

代碼: [選擇]

#chmod 755 /tmp/dir '先把dir的sgid & g-w拿掉
#ls -ald /tmp/dir/
drwxr-xr-x  2 u3 g3 4096 Jul 27 06:41 /tmp/dir/

u1@vm_trustix ~$ id
uid=1001(u1) gid=1000(g1) groups=1000(g1),1001(g2),1002(g3)
u1@vm_trustix ~$ ls -al /tmp/pro
-rwsr-sr--  1 u2 g2 13889 Jul 27 06:18 /tmp/pro*
u1@vm_trustix ~$ /tmp/pro
can't not create /tmp/dir/newfile.txt
can't not create /tmp/dir/newdir
u1@vm_trustix ~$ ls -al /tmp/dir
total 8
drwxr-xr-x  2 u3   g3   4096 Jul 27 06:41 ./
drwxrwxrwt  3 root root 4096 Jul 27 02:55 ../



but...如果是只把dir的sgid拿掉
代碼: [選擇]

#chmod 775 /tmp/dir
#ls -ald /tmp/dir/
drwxrwxr-x  2 u3 g3 4096 Jul 27 06:41 /tmp/dir/
u1@vm_trustix ~$ id
uid=1001(u1) gid=1000(g1) groups=1000(g1),1001(g2),1002(g3)
u1@vm_trustix ~$ ls -al /tmp/pro
-rwsr-sr-x  1 u2 g2 13889 Jul 27 06:18 /tmp/pro*
u1@vm_trustix ~$ /tmp/pro
create file: OK
create dir: OK
u1@vm_trustix ~$ ls -al /tmp/dir/
total 12
drwxrwxr-x  3 u3   g3   4096 Jul 27 07:26 ./
drwxrwxrwt  3 root root 4096 Jul 27 07:07 ../
drwxr--r--  2 u2   g2   4096 Jul 27 07:26 newdir/
-rw-r--r--  1 u2   g2      0 Jul 27 07:26 newfile.txt
u1@vm_trustix ~$

它又行了!!!難到是只會合並group的權限???

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17403
    • 檢視個人資料
    • http://www.study-area.org
netman 台北班練習題3-7題
« 回覆 #3 於: 2005-07-27 16:13 »
u1 在 g3 裡.
pro 的 sgid 只是修改了 effective (primary) group. 但 other groups 還是 g3 啊..

alingo

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
netman 台北班練習題3-7題
« 回覆 #4 於: 2005-07-27 16:23 »
謝謝netman老師

哦!!!我瞭解了 :D
LINUX果真奇妙呀!!!