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

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

Linux|系统管理|WEB开发 2009-12-03 18:51:40 浏览 2,546 次

E6.1 怎样决定用户的默认组?怎样改变它?

A:感觉还是用户设置为默认的同名私有组作为默认组是比较恰当的。改变组的指令是chgrp。
E6.2 说明下面这几个umask值的区别:077、027、022和755.为了让这些值的其中之一成为新用户的全局默认值,该怎么做?您可以给用户施加一个标准的umask吗?

A:077,表示创建的缺省文件许可是600,027则是640,022则是644,755则是022。想成为新用户的全局默认值,一个办法是修改系统缺省的umask值,Fedora/RedHat系统是/etc/bashrc文件。Debian/Ubuntu系统是/etc/profile。或者直接修改/etc/skel/.bash_profile文件,增加umask的设定。
E6.3 隐蔽口令文件的目的是什么?

A:安全,安全,安全!
♥ E6.4 列出不用useradd程序,给系统增加一个用户所需要的步骤。对于您本地的环境来说,额外还需要什么步骤?

在/etc/passwd增加入口,给/etc/shadow增加入口,给/etc/group创建组(如果有必要)。创建用户主目录,拷贝模板文件。

我原来管理的机器,还需要增加邮件存储路径,邮件配额等。

♥ E6.5 确定您的站点上用于新用户的命名约定。采取什么规则?如何保持唯一性?您会想到什么缺点吗?如何删除用户?

A:这类开放式的问题还怎不知道如何回答。首先,我没有管理这么多机器。其次管理的机器帐号数量也很少。另外,我们一般有自己的一个网络名,很少重复。那么这个网络名绝大部分就成了新用户的登录名。不过一个不好就是无法一眼就能知道这个帐号对应的实际活生生的人是谁?

♥♥ E6.6 找到一份学生名单,用它作为脚本的输入,按照您站点上的命名约定构成登录名。在您遇到冲突之前可以受理多少用户?总共有多少个冲突?使用这些数据来评定您站点的命名约定,并给出改进建议。

A:这也是开放式的问题了。需要在自己的实际管理经验中总结,而且还必须是在管理众多用户的情况下才能理解到这个含义。

那就拿我们公司的邮件帐号命名来说,我们一般采取名字拼音首字母+姓全拼音的方式。比如我的邮件名字就是wgzhao。目前来看,重复的几率不大。这样命名似乎也是一个常用的方式。当然对于采取也写企业级邮件系统,比如Domino的,他们的命名采取类似LDAP数据库的分级方式。我了解到的是在大部分银行内部邮件是这样的,而且似乎采取Domino作为邮件服务器的都是这样,包括IBM本身。

♥♥ E6.7 编写一个脚本,帮助监视/etc/passwd文件是否正常(除非您开动脑筋,否则b和e需要超级用户权限)
a) 找出有UID 0的所有项
b) 找出没有口令的所有项(需要/etc/shadow文件)
c) 找出有重复UID的所有项
d) 找出有重复登录名的所有项
e) 找出没有作废日期的所有项(需要/etc/shadow文件)

A:每一个要求,基本上就是一条指令,我就分别写好了。

a)  awk -F: ‘{ if ($3 == 0) print $0}’ /etc/passwd

b) 题目的意思似乎是不想用到超级用户权限,那么使用sudo算不算呢?好吧,加点难度,sudo也不用。判断用户是否没有口令,一般来说如果/etc/passwd秘密一项没有占位符,也就是为空。或者/etc/shadow里密码一项为空。这都表示帐号没有密码。为了统一起来,我们可以把标准帐号挨个尝试,如果不需要密码就能su过去,那就应该是没有密码,否则就是有密码。对于Fedora/RedHat而言,标准帐号从500开始。Debian/Ubuntu则从1000开始。

#!/bin/bash
for i in `awk -F: '{ if ($3 > 499) print $1}'`
do
su - $i  < <EOF
 
EOF
[ $? -eq 0 ] || getent passwd $i
done

c)

#!/bin/bash
echo "the following uid(s) is/are duplicated"
awk -F: '{print $3}' /etc/passwd |sort -n |uniq -d
exit 0

d)

#!/bin/bash
echo "the following name(s) is/are duplicated"
awk -F: '{print $1}' /etc/passwd  |sort  |uniq -d
exit 0

e) 这个暂时想不出不用root权限如何获得任意帐号的过期信息。大家有什么办法吗?如果root权限就办好多了,比如下面这样:
awk -F: '{if ( $8 > 0) print $0 }' /etc/shadow

建议继续学习

  1. Linux系统管理手册习题实践 (阅读 3,523)
  2. linux系统管理技术手册第十二章系统实践 (阅读 3,203)
  3. Linux系统管理技术手册第五章习题实践 (阅读 3,183)
  4. Linux系统管理技术手册第10章系统实践 (阅读 3,141)
  5. Linux系统管理技术手册第三章习题实践 (阅读 3,064)
  6. Linux系统管理技术手册第四章习题实践 (阅读 3,002)
  7. Linux系统管理技术手册第十三章系统实践 (阅读 2,822)
  8. Linux系统管理技术手册第8章习题实践 (阅读 2,703)
  9. Linux系统管理手册第二章习题实践 (阅读 2,405)
  10. Linux系统管理技术手册第七章习题实践 (阅读 2,382)