//题目其实是标题党….
//本文仅供此次Linux课程复习留念,如涉及版权问题,当没看见即可,谢谢合作
在这片神奇的土地上,有一群勤劳的挨踢农民,最近迷上了先进的Linux技术,于是纷纷前去牛村拜听村长朱神的课,朱神最近迷上了植物大战僵尸,请来一群僵尸闯入Linux世界,又布下重重难关,大家不得不掏出Shell武器招架,好了,来看看战况如何~
假设“植物大战僵尸”游戏中的每一个角色(植物和僵尸)都想要在你的Linux系统中获得一个合法的用户,并拥有属于自己的HOME文件夹,请在你的Linux系统中完成以下操作以满足植物们和僵尸们的要求
1. 植物们和僵尸们是势不两立的,因此必须有属于他们自己的组,植物们的组叫做Plants,僵尸们的组叫做Zombies;
Linux中创建组的命令是:groupadd [-fr] [-g<gid><-o>][gname]
这里建立两个用户组:Plants ,Zombies 分别设置1003和1004作为他们的gid
#groupadd -g 1003 Plants
#groupadd -g 1004 Zombies
这样,组就建立完成了,可以在/etc/group 中找到所有组的信息

2. 目前向植物组里面添加用户Peashooter、Sunflower、CheeryBomb、Wallnut、SnowPea;
在已经有组的情况下,可以新建用户的同时将其加入既有的组中
新建用户的命令如下(常用部分):adduser [-mMnr][-d <$HOME dir>][-g<group(main)>][-G<group(add)>][-s<shell>]
-m会自动建立同名HOME目录,-g指定用户所属的组,-G将用户加入附加组(详细的参数请向“男人”请教:man adduser)
#adduser -m -g Plants Peashooter
对于其他用户,做同样处理
3. 向僵尸组里面添加用户Zombie、FlagZombie、ConeheadZombie、PoleVaultingZombie、BuckheadZombie;
与上面同样处理,例如:
#adduser -m -g Zombies Zombie
所有用户的信息保存在/etc/passwd (这里其实不存密码的)文件中

4. 势不两立的植物们和僵尸们觉得对方能看见自己的文件很不爽,因此他们做出了如下要求:设置所有的用户可以访问(读写运行等)自己建立的文件、同组的用户可以读同组用户的文件、别的组的用户部可以访问任何不是自己组用户的文件;
这里涉及到了Linux系统的权限管理,Linux系统中每一个文件都有属性可以通过ls -l 命令,完整的查看文件的详细信息:
#ls -l test.c
X -rw-r–r– 1 root root XXXX XXXX-XX-XX XX:XX test.c
目录及文件占block数 权限信息 硬链接数 拥有着 拥有着组 文件/目录大小(字节) 变动时间 名称
权限表示信息共10位,其中 第一位表示文件类型(-为普通文件,d为目录)后9位表示权限设置 格式:
这里,r表示读取,w表示写入,x表示执行(或切换)。
rwx(user|本用户)rwx×(group|用户所在的组)rwx(others|其他所有人)
在Linux的世界里,信息位经常转为16进制或8进制,方便在配置中设置管理。9位信息可用3个8进制数表示:
例如: rw-r–r– ->110100100 -> 0644 ; (0表示8进制数)
知道这些,就可以为文件设置权限了,更改权限的命令是 chmod [-R]( u|g|o +|- r|w|x,) (0xxx) file 详细参数请man
#chmod u=rw,g=r,o=r file 或 chmod 0644 file
按照题目的要求,自己用户对自己文件的权限是可读、可写、可执行:rwx。同组用户可读:r– 。其他用户不可访问本组文件:—
因此,用户建立的文件、目录 它的默认权限就应该是rwxr—–| 0740 。
为了满足这一要求,需要修改文件创建时的默认权限,这里通过一个环境变量umask来实现。
#umask 0xxx | 这里0xxx是掩码,也就是你的默认权限=满权限-掩码
这里,文件的满权限为666 目录的满权限为777,例如 设
#umask 022
则对于文件:0666-022=0644 rw-r–r–
目录:0777-022=0755 rwxr-xr-x
通过推算,我们需要设置的umask为026,可见这个设置满足我们的要求了。
![]()
环境变量的修改可在/etc/profile, ~/.profile 等文件中进行,在启动时依次加载,这里由于要对所有用户和组生效,因此在全局的/etc/profile文件中设置:
umask=026
即可。这里注意修改全局的配置/etc/下的文件需要root权限。
5. 坚果(Wallnut)被僵尸们啃了之后不小心忘记了自己的密码,他找你帮忙把他的密码重新设置为lovePeashooter;
为用户设置密码在root账户下进行。命令为: passwd [-dklS][-u<-f>][username]
#passwd Wallnut
NEW UNIX PASSWORD: ************
6. 可怜的CheeryBomb的妈妈三天前生病了,CheeryBomb走的匆忙没有注销而被FlagZombie发现之后在他的HOME里面随处存放了很多印度小电影,CheeryBomb很恼火,但却找不到这些小电影的位置,请你帮他找出来并删除掉(提示根据文件创建时间查找);
我很纯洁,我的电脑里没有印度小电影(=_=#)
分析一下,需要实现的功能主要是文件的查找操作,而查找的目标是规定时间段内修改的视频文件。
这里主要用到find命令:find [option][path][expression]
[option]:
-b 只显示文件类型而不显示文件名
-z 尝试判断压缩文件中的文件类型
-L 显示链接文件的源文件的文件类型
-F SEP 使用SEP作为分割符分割文件名和类型
-f LIST 列出LIST文件中各文件的类型
[path]:路径
[expression]:
时间:
-amin N N分钟之前被访问的文件(Access)
-atime N N*24小时之前被访问的文件
-cmin N N分钟之前被改变的文件(Change)
-ctime N N*24小时之前被改变的文件
-mmin N N分钟之前被修改的文件(Modify)
-mtime N N*24小时之前被修改的文件
-anewer FILE 比FILE文件更晚被访问的文件
-cnewer FILE 比FILE文件更晚被改变的文件
-mnewer FILE 比FILE文件更晚被修改的文件
属性:
-empty 查找空文件
-uid/gid N 查找对应uid或gid的文件
-user USER 查找用户USER的文件
-group GRP 查找组GRP的文件
-size N 查找对应大小的文件
-links N 查找有N个连接的文件
-inum N 查找inode为N的文件
动作:
-delete 删除查找到的文件
-exec CMD 对查找到的文件执行CMD命令
强烈建议#man find 去查看更多信息。
综上,我们可以使用find找到3天内所有Change|改变过的文件(注意Change改变,Modify修改和Access访问的区别),新创建或者拷贝进来的应该算是Change,这些文件以.avi结尾,找到并删除之:
#find /home/CherryBomb/ -cmin 4320 “.avi” -delete
敲下回车,小电影就不见了。
======================================================================================
欲知后事如何,且听下回分解。
##########################################
* 西格玛向量™->个人博客,欢迎访问:您的满意,我的动力。
##########################################
文章的脚注信息由WordPress的wp-posturl插件自动生成



