单元五实验
文件访问权限
估计用时: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分钟