IT技术博客大学习 共学习 共进步

Linux系统管理技术手册第五章习题实践

Linux|系统管理|WEB开发 2009-11-27 23:55:46 累计浏览 3,187 次

这一章的习题比较简单,虽然难点是ACL,但是似乎作者很讨厌ACL,因此习题里,一个有关ACL的问题都没有。

E5.1 什么是umask?创建一个umask,对于属组或者其他人什么权限也不给。

A:umask是一个三位八进制数字表示的变量,用来给shell设定新创建的文件的默认权限。
设置umask为0077即可,如下所示:

wgzhao@wgzhao-nb:/tmp$ umask 0077
wgzhao@wgzhao-nb:/tmp$ touch test
wgzhao@wgzhao-nb:/tmp$ ls -l test
-rw------- 1 wgzhao wgzhao 0 2009-11-27 20:11 test

E5.2 硬链接和符号(软)链接之间有什么不同?什么时候适合用哪一种链接?
A: 区别在于:硬链接是直接引用,而符号链接是通过名称来进行引用,符号链接跟他们指向的文件是不同的。
看你要做什么用,如果你仅仅只是为了达到一种“快捷访问”,或者创建多路劲访问文件的便利,那么使用符号链接无疑是最佳的。但是如果你想获得一个文件的完整拷贝,并能同步更新,而且还能在原始文件被删除后不影响链接文件,那么硬链接就是你需要的。
大部分情况下,你可以需要的仅仅是符号链接。

E5.3 阅读/etc/fstab文件的手册页。编写一行配置,在启动时自动安装一个Windows NTFS分区 /dev/hda1.使用/mnt/win_c作为安装点。

A:编写/etc/fstab不是难题,关键是看你的Linux是如何实现对NTFS访问的,有的可能是ntfs-3g,有的可能是内核直接支持,在fstab文件上反映出来的区别在域文件系统类型这一项,大致如下:
/dev/hda1    /mnt/win_c   ntfs-3g defaults 0 0

E5.4 在安装Linux系统的时候,“Foobar Linux”发行版使用下面的默认配置:

/ 100MB
/var 50MB
/boot 10MB
< swap > 128MB
/usr 剩余空间

在一个繁忙的服务器上采取这样的安排会有什么样的潜在问题?

A: 看到这些数字,我以为我回到了硬盘只有2G的年代。但是不管在什么年代,分区对系统而言要考虑当前足够可用,以后发展还能适用的原则。
上面的分区,首先swap分区不太大。当然我估计这机器内存也就是64M的样子。/var分的过小。繁忙的服务器,得要看它是忙什么了,如果是mail之类的,那/var肯定立刻就被塞满了,因为默认情况下,邮件队列在/var/spool目录下。

E5.5 为什么说有些分区(比如/var/,/home和交换分区)防盗一个和其他数据文件和应用程序不同的单独驱动器上是一个好主意? /tmp呢?对于列出的每一种文件系统给出针对性的理由。

A:一直以来,分区我坚持三分开原则,也就是系统,应用,数据三者分开。这样不会任何以防的损坏导致另外一方出现灾难性故障。比如系统分区坏了,重建系统就好了,应用和数据不需要变动。同样的,应用坏了,重建应用,数据和系统不用变化。
想想Windows下痛苦的注册表,你就会理解三者分开的好处了。

对于系统本身而言,处于其他方面的考虑,还可以细分,比如把/usr 单分,可以提高性能和安全级别,如何做到?首先单分后,挂载/usr分区,我们可以增加noatime的参数。因为/usr下是系统绝大部分库和程序,属于静态数据,atime属性对此没有意义。我们设置还可以把/usr作成别的文件系统,比如tmpfs来增加速度。另外,可以把/usr挂载为只读,以提高效率。
/home单独分区的意义当然就很多了,安全,配额都是重要的因素。
至于/tmp,在我个人的经验中,很少单独分区,除非用户有特别说明和要求。我看到的往往是单独分区后,因为过小,而导致/tmp空间不足的负面效果。所以/tmp是否单独分区,还真的需要和实际的应用结合起来考虑,不能单一从操作系统上考虑。

E5.6 写一个脚本,找到一个文件系统上所有的硬链接。

A: 需要利用的一个技巧是ls -l命令能给出文件的链接数(就是第二列数值),如果大于1,则表示有硬链接文件。然后利用find查找出是这个inode的所有文件。因为硬链接文件的inode一致。
所以脚本分两个两个部分,第一个部分是找出所有链接数大于2的inode,形成列表。
第二步找出等于这些inode的文件。但是我们可以用一行脚本来完成这个操作,类似如下:

wgzhao@wgzhao-nb:/bin$ find /bin -type f -ls |awk '{if ($4 >1) print $1,$11}'
1628730 /bin/bzip2
1628730 /bin/bunzip2
1628730 /bin/bzcat
1622053 /bin/uncompress
1622053 /bin/gunzip

首先利用fin -type f 的参数,保证只寻找正规文件。然后利用find的-ls参数,等价于ls -ldis,这样就把inode和链接数打印出来了,接着将结果交给awk处理,awk判断第四列(链接数)是否大于1,如果大于,则把inode和文件名打印出来。当然可以打印更多的东西。你只需要把/bin目录换成你需要的目录就可以了。

E5.7 给出完成下面任务的命令:

  1. 把README的权限设置为对属主有读写权,而其他每个人有读权
  2. 在不需要改变(或者知道)目前权限的情况下,打开一个文件的setuid位;
  3. 里出当前目录的内容,按照修改时间排序,把最近修改的文件放在最后;
  4. 将一个叫做shared的文件的属组从“user”改成“friends”。

A:因为简单,直接给出演示的答案了。

/*第一问*/
$touch README
$chmod 644 README 
$ls -l README 
-rw-r--r-- 1 wgzhao wgzhao 0 2009-11-27 21:12 README
/*第二问*/
$chmod u+xs README 
$ls -l README 
-rwsr--r-- 1 wgzhao wgzhao 0 2009-11-27 21:12 README
/*第三问*/
$ls -lt |sort -n
drwx------ 2 root   root   4096 2009-11-27 11:29 orbit-root
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 11:03 keyring-5juJ1c
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 11:03 pulse-wZb2dv9SzM6y
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 11:03 seahorse-xvIvYW
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 11:03 ssh-TjUZjM2036
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 11:04 virtual-wgzhao.z5uZOh
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 19:26 plugtmp
drwx------ 2 wgzhao wgzhao 4096 2009-11-27 19:35 orbit-wgzhao
drwxr-xr-x 2 wgzhao wgzhao 4096 2009-11-27 19:43 hsperfdata_wgzhao
-rwsr--r-- 1 wgzhao wgzhao    0 2009-11-27 21:12 README
/*第四问,因为系统上没有friends组,用www-data代替*/
$sudo chgrp www-data  README
$ls -l README 
-rwxr--r-- 1 wgzhao www-data 0 2009-11-27 21:12 README

建议继续学习

  1. Linux系统管理手册习题实践 (累计阅读 3,525)
  2. linux系统管理技术手册第十二章系统实践 (累计阅读 3,205)
  3. Linux系统管理技术手册第10章系统实践 (累计阅读 3,143)
  4. Linux系统管理技术手册第三章习题实践 (累计阅读 3,065)
  5. Linux系统管理技术手册第四章习题实践 (累计阅读 3,002)
  6. Linux系统管理技术手册第十三章系统实践 (累计阅读 2,823)
  7. Linux系统管理技术手册第8章习题实践 (累计阅读 2,705)
  8. Linux系统管理技术手册第六章习题实践 (累计阅读 2,546)
  9. Linux系统管理手册第二章习题实践 (累计阅读 2,406)
  10. Linux系统管理技术手册第七章习题实践 (累计阅读 2,384)