單元五實驗 文件訪問權限 估計用時:30分鐘 目標:熟悉多個修改文件權限命令的語法和應用,並可組合命令以完成一般的任務。 實驗前准備:一台安裝好的系統,其上有student 帳號。 實驗1:定義文件的訪問權限的實踐 任務: 1、寫下文件權限的字串(類似rwxr-xr-x): 664:_______________________ 755:_______________________ 000:_______________________ 711:_______________________ 700:_______________________ 777:_______________________ 555:_______________________ 705:_______________________ 111:_______________________ 600:_______________________ 731:_______________________ 2、一個文件權限為755,哪條命令可以將其權限改為r-xr--r--? 3、你剛從Internet上下載了一個值得信任的執行文件。在你運行它之前你必須做什麼?寫下兩種不同的途徑。 4、你在之後的單元中將會學到進程(系統中運行的程序)是被用戶和用戶組所擁有的,就像文件和目錄一樣。一個進程只有當它的擁有者和擁有者組擁有相應的權限時,它才可以讀、寫並執行一個文件或目錄。 Red Hat Linux 系統通常配置成由用戶apache 和組apache 運行apache Web服務器進程。 在系統安裝的時候該用戶和組已經作為apache 的一部分已經建立。 假設你有一個目錄結構 /home/student/archive 裡面有許多的文件和目錄,都被設置為權 限700。你想將archive 目錄在Internet 上設置為可訪問的,但是當前的許可並不允許web服 務器(以用戶apache 運行)訪問文件。使用chmod 命令,你如何用一條命令改變文件的訪問權限? 實驗2:使用umask 設置新建文件的默認訪問權限。 任務: 1、登錄 2、查看當前的umask $ umask 3、創建幾個文件和目錄,看看它們的訪問權限 $ toUCh umtest1 $ touch umtest2 $ mkdir umtestdir1 $ ls -ld um* 4、改變你的umask 為一個更安全的設置,然後新建文件與目錄,再比較一下訪問權限 $ umask 066 $ touch umtest3 $ touch umtest4 $ mkdir umtestdir2 在查看訪問權限之前,你覺得它們的權限會是多少? $ ls -ld um* 單元六實驗 Linux 文件系統基礎 估計用時:1小時30分鐘 目標:形成對Linux 文件系統的更充分的理解,包括:建立和使用link,使用mtools 包以處理DOS 文件系統,使用slocate 和find,並將文檔打包和壓縮。 實驗前准備:一台裝有Red Hat Linux 系統的機器,你在實驗2中需要一張空白軟盤。 實驗1:建立並使用link 任務: 1、在早先的實驗中,你應該拷貝了/usr/share/dict/Words 到你的帳號——student 的home目錄中,並命名為words。當時,這樣做的原因是為了使你訪問這個文件更簡單。現在,我們使用link 來達到同樣的效果。 2、為了避免原來的文件和拷貝文件的混淆,我們刪除words 文件的拷貝。 $ cd $ rm words 3、如果這時候你還沒有意識到的話,你早些使用的/usr/share/dict/words 實際上是一個soft link。列出/usr/share/dict,看看link 和它的指向: $ ls -l /usr/share/dict total 404 -rw-r--r-- 1 root root 409305 Apr 3 10:29 linux.words lrwxrwxrwx 1 root root 11 Apr 20 17:33 words -> linux.words a、你如何知道它是一個soft link? b、為什麼文件的大小是11字節? c、words對所有用戶開放所有的訪問權限。這會對linux.words 產生什麼樣的影響?除了root用戶能通過這個link 向linux.words 寫數據嗎? 4、再次列出文件,這次顯示它們所對應的inode。它們是否擁有相同的inode? $ ls -i /usr/share/dict 5、現在在你的home 目錄中建立一個symbolic link 和一個hard link,指向 /usr/share/dict/linux.words: $ ln -s /usr/share/dict/linux.words soft $ ln /usr/share/dict/linux.words hard 6、測試你的新link 指向的數據: $ head hard soft 7、用下面的命令測試你建立的link,並回答下列問題: $ ls -il hard soft $ stat hard soft 寫出文件hard 的大小________,和soft 的大小_________。 hard 確實使用的數據塊________,soft確實使用的數據塊__________。 你如何解釋這兩個文件在數據塊數上的不同? hard 的link 數________,soft 的link 數__________。 hard 的 UID和GID__________,soft的_____________。 文件hard 由root 所擁有,並對其他用戶只開放讀權限。student 用戶是否可以刪除這個新建的文件?為什麼? 8、挑戰: a、你能建立一個symbolic link 指向一個不存在的文件嗎?在這種情況下ls 命令是否給出任何提示? b、你能建立一個hard link 指向一個不存在的文件嗎?為什麼? c、你能建立一個hard link 指向一個soft link 嗎?如果你這樣做的話會出現什麼情況? d、在建立了幾個hard link 之後,你如何找出“真正”的文件?這個問題有意義嗎?(換句話說,有沒有比你建立hard link 更“真實”的文件?) 實驗2:使用mtools 包(省略) 實驗3:使用find 任務: 設計並執行滿足下面條件的find 命令。當你執行時遞歸搜索到一些你沒有讀權限的子目錄時 你可能會遇到一些"Permission denied"消息,別去管它。你也可以在末尾加上2> /dev/null來消除這些錯誤消息的影響。 第一個問題的答案已經給出,執行它,並把其他的完成。你可能需要翻看man page,並記住使用/string 來搜索你需要的字串。如果你哪裡卡住了,你可以翻看在實驗4後列出的答案。 1、列出在/var/lib下games 用戶擁有的所有文件 $ find /var/lib -user games 2> /dev/null 2、列出在/var 下root 用戶和mail 組所擁有的所有文件 3、以"ls -l"風格列出在系統上所有不被root 或者bin 或者student 用戶所擁有的文件 4、以"ls -l"風格列出/usr/bin 下所有大於一百萬個字符的文件 5、對/etc/mail 下所有的文件執行file 命令 6、以"ls -l"風格列出/tmp 下為student 用戶所擁有的“普通”文件(regular files) 7、添加上面的命令使得以"ls -l"風格列出/tmp 下為student 用戶所擁有的“普通”文件 (regular files),並且它們的修改時間在一天之前 8、改變上面的命令使得刪除在/tmp 下為stduent 用戶所擁有的“普通”文件(regular files),並且它們的修改時間在一天之前。並且在每個文件刪除之前都提示是否刪除。 實驗4:歸檔和壓縮 假設: 你的主硬盤在你每次使用它的時候發出可怕的聲音,你估計它快完蛋了並且會將你珍貴的資料一起帶入墳墓。考慮到上次的系統備份是2年半之前,你決定備份一些對於你來說至關重要的文件。/tmp 目錄是位於另外一個物理硬盤上的分區,所以你會暫時將你的文件備份到那裡。 (然而,tmpwatch 進程會將/tmp 目錄中10天沒有訪問過的文件刪除,你最好不要在那裡把你的重要文件存放過長時間。) 任務: 1、使用find 查找/home 下所有被student 所擁有的文件,然後將這些文件名傳給tar 並把它們存儲在/tmp 中。 $ find /home -user student -exec tar rvf /tmp/backup.tar {} \; 2、將/etc 內的內容存儲在/tmp 中的另外一個tar 文件中: $ tar cvf /tmp/confbackup.tar /etc 3、列出兩個新文件並記錄它們的大小: $ ls -lh /tmp/*.tar backup.tar 文件的大小_________。 confbackup.tar 文件的大小_________________。 4、使用gzip 來壓縮你的歸檔文件。然後記錄新的文件大小: $ cd /tmp $ gzip *.tar $ ls -lh *tar* backup.tar.gz 文件的大小______________。 confbackup.tar.gz 文件的大小__________________。 5、解壓這些文件,並重新將它們用bzip2壓縮,並記錄新的文件大小: $ gunzip *.gz $ ls -lh *tar $ bzip2 *tar $ls -lh *tar* backup.tar.bz2 文件大小________________。 confbackup.tar.bz2 文件大小_________________。 6、在一個傳統UNIX系統上,歸檔文件並壓縮歸檔的步驟是分開的,就像你前面所做的那樣。 在一個Linux 系統上,使用GNU tar 命令,tar 文件可以在建立文件的同時自動地進行一系列不同的壓縮。試試下面的步驟。tar 命令會輸出一些錯誤信息,因為非特權用戶在/etc 目錄下對一些文件沒有讀權限。在本實驗中,可以忽略。 $ rm confbackup.tar.bz2 $ tar cfz test1.tgz /etc $ tar cfj test2.tbz /etc $ file test* 完成:你導入的文件已經在/tmp 目錄下安全地歸檔、壓縮並備份了。 實驗3答案: 2、find /var -user root -and -group mail 2>/dev/null 3、find / -not -user root -and -not -user bin -and -not -user student -ls 2>/dev/null 4、find /usr/bin -size +1000000c -ls 5、find /etc/mail -exec file {} \; 6、find /tmp -user student -ls 2>/dev/null 7、find /tmp -user student -and -mtime +1 -and -type f -ls 2>/dev/null 8、find /tmp -user student -and -mtime +1 -and -type f -ok rm {} \; 單元七實驗 bash shell 估計用時:45分鐘