● 設定每個文件的權限 ( 模仿UNIX Sys ) : Owner rwx / Group rwx / Others rwx
● 功能要求:
第一部分:
1. 建立一個 server 管理及保存 clients 的檔案
2. 有三個 groups ,分別叫 AOS_group”, “CSE_group”, 和“other_group“,每個 group 中至少兩個 clients
3. clients 可以下載或上傳檔案
4. 當 clients 要求對檔案做不符合權限的操作時,server 必須禁止並且顯示錯誤訊息說明理由
5. 每個 clients 都可動態新增檔案,clients可操作的指令有以下:
1) new homework2.c rwr-r
client 新增一個檔案到 server 上
2) read homework2.c
client 從 server 下載檔案
3) write homework2.c o/a
client 上傳一個存在的檔案,第三個位置可填o(覆寫相同檔名之檔案)或者a(將資料接在相同黨名之檔案元原資料後)
4) change homework2.c rw----
client 修改檔案權限,若修改權限的行為發生在有其他人正在操作此檔案時,操作的權限依循未修改前檔案權限,也就是說操作檔 案的權限是依循開始操作當下檔案權限,操作中途變更的權限不理會
5) information homework2.c
顯示檔案描述訊息 (permissions, creator, group, file size, datecreated, and filename)
例:
一個完整的文件描述,如: -rw-r----- Ken ASO 29334 Nov 21 2018 homework2.c
- (Owner) rwx (Group) rwx ( Others) rwx 擁有者(創建文件者) 群組名稱 文件大小(Bytes) 月 日 年 文件名稱.副檔名
擁有者可允許其他人加入群組
6. 注意: 所有 clients 的操作都在 server 的同一個資料夾中,server 必須使用 Capability Lists 去管理檔案權限 (只有server需要創建), 必須告訴助教在每個指令下 server 的 Capability Lists 如何轉變
7. 讀寫的同步處理:
1) 當有 client 正在 write 檔案時,其他 client 不可write (server 顯示錯誤訊息)
2) 當有 client read 時,不可有其他 client write
3) 可多個 clients 同時 read
第二部分:
1. demo 第一部分中的所有要求給助教看
2. server 必須可以許多個 clients 連接,並且可多個 clients concurrently(平行) 讀寫檔案 (提示: 因此檔案需要大一點,才能明顯地給助教顯示出此項功能)
3. 鼓勵使用 multiply threads 或是 fork() 來實作此次作業 ( 阿如果想要用多電腦實作當然更好 )
作業要求:
1. 使用 standard C socket library in UNIX-compatible systems
2. 提供 Makefile ( 如果makefile不正確,助教會扣分)
3. 記得去 demo,否則 0 分
打分標準:
1. 不需繳交報告
2. 第一部分60% 第二部分 40%
3. 加分: if you can adopt multiple processes/threads on the server side, or you have special design in the homework
繳交期限: 2018/12/20
http://urban-computing.com/pdf/CIKM2018deepcrime.pdf