Linux 基础学习训练教材 - CentOS 7.x

第 4 堂课:Linux 基础文件权限与基础帐号管理

Linux 的权限概念相当的重要!这里先简略的了解一下。权限与帐号相关性很高喔!所以,也要玩一下帐号管理!

最近更新时间: 2017/03/09

从前几节课的练习中发现,使用 student 进行一些任务时,总是发现无法顺利的拷贝或者是进行其他的文件管理任务,这是因为『权限不足』所致。 本堂课要来介绍 Linux 基础文件系统,借以了解为何 student 的任务会成功或失败。此外,为了管理权限,有时也需要管理用户帐号, 故基础帐号管理也在本堂课介绍。

4.1:Linux 传统权限

Linux 权限的目的是在『保护某些人的文件数据』,因此,读者在认识『权限』的角度上,应该要思考的是『这个文件的权限设置后, 会造成哪个个人?或某群人的读写开放或保护』。所以,这些权限最终都是『应用在某个/某群帐号』上面!而且,权限都是『设置在文件/目录』上, 不是设置在帐号上面的,这也要先厘清。

4.1.1:用户、群组与其他人

Linux 的文件权限在设置上,主要依据三种身份来决定,包括:

  • user / owner / 文件拥有者 / 用户:就是文件所属人
  • group / 群组:这个文件附属于那一个群组团队
  • others / 其他人:不是 user 也没加入 group 的帐号,就是其他人。

底下以一个小案例来说明这三种身份的用法。

假设读者还在学校当老师,你有一本书要让班上同学借阅,但你又不想管,此时你会如何决定『这本书 (文件)』的命运? 通常的作法是:

  • 用户:让某个学生当小老师,这本书就归他管 (用户),同学要借得要通过这位小老师
  • 群组:任何加入本班的同学 (一群帐号) 都是本班群组,这本书对本班群组的同学来说,大家都能借阅。
  • 其他人:不是本班的同学,例如隔壁班的阿花与阿咪,对这本书来说,他们都是属于『其他人』,其他人没有权限可以借阅这本书。

由上面这个简单的小案例,读者应该能够知道,Linux 上面的文件『都是针对帐号』来进行管理的, 只是为了方便管理上的设置 (班级同学与非本班其他同学) ,因此又将非本人的所有帐号分为两类,一类是加入用户所设置的群组, 一个则是没有加入群组的其他人。

  • 文件权限的观察

单纯的文件权限观察,可以使用 ls -l 或 ll 来查阅,底下为查找系统 /var/spool/mail 这个目录的权限方式:

[student@localhost ~]$ ls -ld /var/spool/mail
drwxrwxr-x. 2 root mail 4096  6月 29 03:29 /var/spool/mail
[    A    ][B][C ] [D ] [E ]  [    F     ] [    G        ]

简单的分析,上述的数据共有七个字段,每个字段的意义为:

  1. 文件类型与权限,第 1 个字符为文件类型,后续 9 个字符每 3 个一组,共分 3 组,为三种身份的权限;
  2. 文件链接数,这与文件系统有关,读者可暂时略过;
  3. 该文件的拥有者,本例当中,拥有者身份为 root
  4. 该文件的所属群组,本例当中这个文件属于 mail 这个群组底下
  5. 这个文件的容量
  6. 该文件最后一次被修改/修订的日期时间
  7. 这个文件的文件名。

读者首先可以分析一下这个『文件』的『类型』。之前读者应该看过第一个字符为 - 以及 d 的表示方式,事实上还有很多常见的文件类型, 底下仅为常见的类型介绍:

  • -: 代表后面的文件名为一般文件
  • d: 代表后面的文件名为目录档
  • l: 代表后面的文件名为链接档 (有点类似 windows 的捷径概念)
  • b: 代表后面的文件名为一个设备档,该设备主要为区块设备,亦即保存媒体的设备较多
  • c: 代表后面的文件名为一个周边设备档,例如鼠标、键盘等

所以读者可以知道 /var/spool/mail 为一个目录文件 (d 开头,为 directory 的缩写)。确定了文件类型后,接下来的 9 个字符都是 rwx 与减号而已, 从这 9 个字符判断,读者大概可以猜出 rwx 的意义为:

  • r: read,可读的意思
  • w: write,可写入/编辑/修改的意思
  • x: eXecutable,可以运行的意思

只不过 rwx 该如何与 root, mail 这个用户与群组套上关系?我们可以使用下图来查阅第 1, 3, 4 个字段的相关性:

图4.1-1、用户、群组与权限的相关性
图4.1-1、用户、群组与权限的相关性

如上图所示,第一组为文件拥有者的权限,第二组为文件拥有群组的权限,第三组为不是拥有者也没有加入该群组的其他人权限。 所以上述的文件权限为:

  • 拥有者为 root,root 具有 rwx 的权限 (第一组权限)
  • 群组设置为 mail,则所有加入 mail 这个群组的帐号可以具有 rwx 的权限 (第二组权限)
  • 不是 root 也没有加入 mail 的其他人 (例如 student 这个帐号) 具有 rx 的权限 (第三组权限)
例题:
若有一个文件的类型与权限数据为『-rwxr-xr--』,请说明其意义为何?
答:
先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:
[-][rwx][r-x][r--]
 1  234  567  890
 1 为:代表这个文件名为目录或文件,本例中为文件(-);
234为:拥有者的权限,本例中为可读、可写、可运行(rwx);
567为:同群组用户权限,本例中为可读可运行(rx);
890为:其他用户权限,本例中为可读(r),就是唯读之意


同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)。
例题:
假设有帐号数据如下:
帐号名称  加入的群组
test1     test1, testgroup
test2     test2, testgroup
test3     test3, testgroup
test4     test4
如果有下面两个文件,请分别说明 test1, test2, test3, test4 针对底下两个文件的权限各为何?
-rw-r--r--  1 root     root          238 Jun 18 17:22 test.txt 
-rwxr-xr--  1 test1    testgroup    5238 Jun 19 10:25 ping_tsai
答:
  • 文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个帐号可以访问此文件,其他人则仅能读此文件。 由于 test1, test2, test3, test4 既不是 root 本人,也没有加入 root 群组,因此四个人针对这个 test.txt 的文件来说,都属于其他人, 仅有可读 (r) 的权限。
  • 另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。其中:
    • test1 就是这个 ping_tsai 的拥有者,因此具有可读、可写、可运行的权力(rwx)
    • test2 与 test3 都不是 test1,但是两个都有加入 testgroup 群组,因此 test2 与 test3 参考的权限为群组权限,亦即可读与可运行 (rx),但不可修改 (没有 w 的权限)
    • test4 不是 test1 也没有加入 testgroup 群组,因此 test4 参考其他人的权限,亦即可读 (r)
  • 观察帐号与权限的相关指令

如上面例题,读者可以知道 test1 属于 test1 及 testgroup 群组,所以可以理解帐号与权限的相关性。不过在实际的系统操作中, 若想知道帐号所属的群组,可以使用 id 这个指令来观察即可理解。

例题:
承上题,student 这个帐号对于 ping_tsai 来说,具有什么权限?
答:
  1. 首先需要了解 student 的所属群组,可使用 id 这个指令来查找即可 (直接于指令列输入 id 即可)
  2. id 的输出结果为『uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)』,其中 groups 指的就是所有支持的群组。
  3. 由 id 的输出中,发现 student 并没有加入 testgroup 群组,因此 student 针对 ping_tsai 为『其他人』亦即仅有 r 的权限。

而除了 id 可以观察帐号与权限的相关性,在文件类型部份,可以使用前一堂课谈到的 file 来查找。

例题:
请使用 file 查找 /etc/rc1.d, /etc/passwd, /dev/vda, /dev/zero 个别代表什么类型的文件? 同时使用 ls -l 搭配看最前面的文件类型字符为何。

使用 ls -l 可以很快速的看到文件属性、权限的概观,不过,其实读者也能使用 getfacl 这个指令来了解文件的相关属性与权限。 如下所示,同样使用 /var/spool/mail 作为范本:

[student@localhost ~]$ getfacl /var/spool/mail
getfacl: Removing leading '/' from absolute path names
# file: var/spool/mail   <==文件名
# owner: root            <==文件拥有者
# group: mail            <==文件群组
user::rwx                <==用户的权限
group::rwx               <==同群组帐号的权限
other::r-x               <==其他人的权限

通过 getfacl 可以更清楚的查找到文件的拥有者与相关的权限设置,只不过就没有文件的类型、修改的时间等参数。

4.1.2:文件属性与权限的修改方式

文件的权限与属性的修改,若以 ls -l 的输出来说,则每个部份可以修改的指令参照大致如下:

[student@localhost ~]$ cd /dev/shm/
[student@localhost shm]$ touch checking
[student@localhost shm]$ ls -l checking
-rw-rw-r--. 1 student student 0  6月 30 15:16 checking
 [ chmod ]    [chown] [chgrp]    [   touch  ] [  mv  ]

由于一般帐号仅能修改自己文件的文件名、时间与权限,无法随意切换用户与群组的设置。因此底下的例题中, 读者应该使用 root 的身份来进行处理,方可顺利进行。首先,切换身份成为 root ,并且将工作目录切换到 /dev/shm。

[student@localhost shm]$ su -
password:
[root@localhost ~]# cd /dev/shm
[root@localhost shm]# ll checking
-rw-rw-r--. 1 student student 0  6月 30 15:16 checking
  • 使用 chown 修改文件拥有者

查找系统中是否有名为 daemon 的帐号,如果存在该帐号,请将 checking 的用户改为 daemon 所拥有,而非 student 所拥有。

[root@localhost shm]# id daemon
uid=2(daemon) gid=2(daemon) groups=2(daemon)

[root@localhost shm]# chown daemon checking
[root@localhost shm]# ll checking
-rw-rw-r--. 1 daemon student 0  6月 30 15:16 checking

其实 chown 的功能非常多,chown 也可以用来进行群组的修改,也能同时修改文件拥有者与群组。建议读者们应该 man chown 查找相关语法。

  • 使用 chgrp 修改文件拥有的群组

系统的群组都纪录在 /etc/group 文件内,若想要了解系统是否存在某个群组,可以使用 grep 这个关键字截取指令来查找。 举例来说,当系统内有 bin 这个群组时,就将 checking 的群组改为 bin 所有,否则就不予修改。

[root@localhost shm]# grep myname /etc/group
# 不会出现任何信息,因为没有这个群组存在的意思。

[root@localhost shm]# grep bin /etc/group
bin:x:1:        <==代表确实有这个群组存在!

[root@localhost shm]# chgrp bin checking
[root@localhost shm]# ll checking
-rw-rw-r--. 1 daemon bin 0  6月 30 15:16 checking
  • 使用 chmod 搭配数字法修改权限

由于文件纪录了三种身份,每种身份都拥有 rwx 的最大权限与 --- 没权限的情况。为了搭配性的方便,于是使用 2 比特的方法来记忆! 亦即是 2 进位的情况:

  • r ==> read    ==> 22 ==> 4
  • w ==> write   ==> 21 ==> 2
  • x ==> eXecute ==> 20 ==> 1

于是每种身份最低为 0 分,最高则为 r+w+x --> 4+2+1 --> 7 分!而因为有 3 种身份,因此用户,群组,其他人的身份, 最多为 777 最少为 000 。以上述 checking 的分数来说,用户为 rw=6, 群组为 rw=6,其他人为 r=4,亦即该文件权限为 664。

例题:让 daemon 可读、可写、可运行 checking,让加入 bin 群组的用户可唯读该文件,让其他人没有权限!
  • daemon 为用户,可读可写可运行则为 rwx = 7
  • 加入 bin 的群组为唯读,亦即为 r-- = 4
  • 其他人没权限,因此为 --- = 0
  • 最终可以使用『 chmod 740 checking 』修改权限
[root@localhost shm]# chmod 740 checking
[root@localhost shm]# ll checking
-rwxr-----. 1 daemon bin 0  6月 30 15:16 checking
  • 使用 chmod 搭配符号法修改权限

另外,读者也能够通过直观的方式来进行权限的设置,亦即使用 u,g,o 代表用户、群组与其他人, 然后使用 +, -, = 来加入/减少/直接设置权限,使用表列方式说明如下:

chmodu(user)
g(group)
o(other)
a(all)
+(加入)
-(减去)
=(设置)
r
w
x
文件或目录

举例来说,让 daemon 可读可写可运行 checking 文件,bin 群组的用户们为可读可写,其他人则为可读,使用符号法的处理方式:

[root@localhost shm]# chmod u=rwx,g=rw,o=r checking
[root@localhost shm]# ll checking
-rwxrw-r--. 1 daemon bin 0  6月 30 15:16 checking
  • 其他属性的修改

假如读者需要修改时间参数与文件名,就得要使用 touch 与 mv 这两个指令了。举例来说,让 checking 的修改日期改到 5 月 5 日的中午 12 点, 实验的方式如下:

[root@localhost shm]# touch -t 05051200 checking
[root@localhost shm]# ll checking
-rwxrw-r--. 1 daemon bin 0  5月  5 12:00 checking

至于文件名的修改则是前一堂课谈到的 mv 这个指令。

例题:
  1. 使用 root 身份,并且移动工作目录到 /dev/shm
  2. 将 /etc/fstab 拷贝到 /dev/shm 底下
  3. 将 /dev/shm/fstab 更改文件名成为 newfs
  4. 让 newfs 的用户成为 sshd 、群组成为 wheel
  5. sshd 这个帐号可读、可写 newfs,wheel 群组成员仅可读,其他人则无任何权限
  6. 让这个文件的日期设置为前一天的 13:30 (日期请依据实际日期来指定)。
  7. 让所有的人都可以运行 newfs 这个文件 (请使用符号法,同时不要更动到既有的权限!)

4.2:基础帐号管理

帐号管理是系统管理员很重要的一个任务,例如学校的教学环境中,教师通常需要预先建置学生的帐号,以方便学期间上课使用。 公司行号一样也需要让管理员建置好员工的帐号密码,才能让员工顺利的办公。此外,『将帐号分组』也是很重要的一项工作。

4.2.1:简易帐号管理

读者应该还记得,要登录系统的时候,需要输入两个数据,一个是点击帐号名称,再来则是输入该帐号的密码。 因此,最简单的帐号管理,即是创建帐号与给予密码的任务。

请读者尝试创建一个名为 myuser1 的帐号,以及给予 MypassworD 的密码,方式如下:

[root@localhost ~]# useradd  myuser1
[root@localhost ~]# passwd  myuser1
Changing password for user myuser1.
New password:          <==此处输入密码
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:   <==再输入密码一次
passwd: all authentication tokens updated successfully.

[root@localhost ~]# id myuser1
uid=1014(myuser1) gid=1015(myuser1) groups=1015(myuser1)

由于系统管理员可以给予帐号任意的密码,因此虽然 MypassworD 并不是一个好密码,不过系统还是予以接受。 而若帐号设置错误,可以使用 userdel 删除帐号,例如:

[root@localhost ~]# userdel -r myuser1

加上 -r 的目的是要该帐号连同家目录与电子邮件新件夹通通删除的意思。如果忘记加上 -r 的话,那就需要手动删除用户的家目录与邮件文件。 底下的例题为重要的帐号管理注意事项,请依序进行下列例题,并自行尝试解决错误。

例题:
  1. 创建名为 myuser2 的帐号,该帐号密码为 mypassWORD
  2. 创建名为 myuser3 的帐号,该帐号密码为 mypassWORD
  3. 观察 myuser2 与 myuser3 的 id 情况
  4. 观察 /home 与 /var/spool/mail 这两个目录的内容,是否有名为 myuser2 及 myuser3 的文件名存在?
  5. 使用 userdel myuser2 删除帐号 (注意,不要加上 -r 的参数)
  6. 再次观察 /home 与 /var/spool/mail 的内容,myuser2 文件名是否存在?该文件名的权限为何?
  7. 重新创建名为 myuser2 的帐号,密码亦同为 mypassWORD,尝试讨论 (1)创建过程中出现的问题原因为何? (2)是否能够顺利创建该帐号?
  8. 承上,请在 tty2 以后的终端机,使用 myuser2 登录系统,登录后是否出现问题?为什么?
  9. 再次使用 userdel -r 的方式删除 myuser2 与 myuser3,是否能够顺利删除?
  10. 承上,若无法顺利删除帐号,请以手动的方式自行删除余留的用户家目录与邮件文件。

4.2.2:帐号与群组关联性管理

若需要创建帐号时,给予帐号一个次要的群组支持,就需要先行建置群组。举例而言,以学校专题制作为例,有三个帐号 prouser1, prouser2, prouser3 加入共有的群组 progroup 时,该如何创建?首先,应该要先创建群组,通过 groupadd 来处理,再来则是通过 useradd --help 找到次要群组支持的选项为 -G 的项目, 即可创建好群组、帐号与密码。同时,管理员可以通过 passwd --help 找到 --stdin 的选项来操作密码的给予。整体流程如下:

[root@localhost ~]# groupadd progroup
[root@localhost ~]# grep progroup /etc/group
progroup:x:1016:   <==确定有 progroup 在设置档当中了

[root@localhost ~]# useradd -G progroup prouser1
[root@localhost ~]# useradd -G progroup prouser2
[root@localhost ~]# useradd -G progroup prouser3
[root@localhost ~]# id prouser1
uid=1015(prouser1) gid=1017(prouser1) groups=1017(prouser1),1016(progroup)

[root@localhost ~]# echo mypassword
mypassword    <== echo 会将消息从屏幕上输出

[root@localhost ~]# echo mypassword | passwd --stdin prouser1
Changing password for user prouser1.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo mypassword | passwd --stdin prouser2
[root@localhost ~]# echo mypassword | passwd --stdin prouser3

读者可以发现到使用 passwd --stdin 的方式来给予密码时,密码会纪录到屏幕与 history 的环境中,因此不见得适用于所有需要资安的系统中。 不过对于大量建置帐号时,会是一个很好用的工具。

另外,如果创建好帐号之后才想到要修改群组资源时,不需要删除帐号再重建,此时可以通过 usermod 来进行修改。举例来说,当 prouser1 还需要加入 student 群组时, 可以使用 usermod -G 的方式来处理!不过需要留意到 -a 的选项才行。

例题:
  1. 使用 usermod -G student prouser1 将 prouser1 加入 student 群组的支持
  2. 使用 id prouser1 发现什么?原本的 progroup 是否依旧存在?
  3. 请使用 usermod --help 查找 -a 的选项功能为何?
  4. 请使用 usermod -a -G progroup prouser1 来延伸给予群组
  5. 再次使用 id prouser1 查阅目前 prouser1 是否有支持三个群组?

4.3:帐号与权限用途

用户能使用系统上面的资源与权限有关,因此简易的帐号管理之后,就需要与权限搭配设计。

4.3.1:单一用户所有权

一般用户只能够修改属于自己的文件的 rwx 权限,因此,若 root 要协助拷贝数据给一般用户时,需要特别注意该数据的权限。 例如底下的范例中,管理员要将 /etc/scuretty 拷贝给 student 时,需要注意相关的事宜如下:

[root@localhost ~]# ls -l /etc/securetty
-rw-------. 1 root root 221 Aug 12  2015 /etc/securetty  <==一般用户根本没权限

[root@localhost ~]# cp /etc/securetty ~student/
[root@localhost ~]# ls -l ~student/securetty
-rw-------. 1 root root 221 Jul  1 19:33 /home/student/securetty

[root@localhost ~]# chown student.student ~student/securetty
[root@localhost ~]# ls -l ~student/securetty
-rw-------. 1 student student 221 Jul  1 19:33 /home/student/securetty

原本 root 拷贝数据给 student 时,若没有考量到权限,则 student 依旧无法读取该文件的内容,这在数据的拷贝行为上,需要特别注意才行。

另外,如果用户想要自己拷贝指令,或者是进行额外的工作任务,可以将指令移动到自己的家目录来处理, 例如 student 想要将 ls 拷贝成为 myls 并且直接运行 myls 来运作系统,可以这样处理:

[student@localhost ~]$ cp /bin/ls myls
[student@localhost ~]$ ls -l myls
-rwxr-xr-x. 1 student student 117616  7月  1 19:37 myls

[student@localhost ~]$ chmod 700 myls
[student@localhost ~]$ ls -l myls
-rwx------. 1 student student 117616  7月  1 19:37 myls

[student@localhost ~]$ myls
bash: myls: 找不到指令...

[student@localhost ~]$ ./myls
bin  myipshow.txt  myls  securetty  下载  公共  图片  视频  文档  桌面  模板  音乐

[student@localhost ~]$ mkdir bin
[student@localhost ~]$ mv myls bin
[student@localhost ~]$ myls
bin  myipshow.txt  securetty  下载  公共  图片  视频  文档  桌面  模板  音乐

若仅想要让自己运行,可以将权限改为 700 之类的模样。而『在本目录运行』则需要使用『 ./command 』的型态来运行, 若想要直接输入指令即可,那需要放入用户自己家目录下的 bin 子目录才行 (与 $PATH 变量有关)。因此本范例中,最终将 myls 移动到 /home/student/bin/ 目录下。

例题:
  1. 让 student 帐号直接运行 mymore 即可达成与 more 相同功能的目的 (亦即将 more 拷贝成为 mymore ,并放置到正确的位置即可)

4.3.2:群组共用功能

某些情境下,群组可能需要共享某些文件数据。举例来说,在学校做专题时,同组专题成员可能需要个别的帐号,不过却需要一个共享的目录, 让大家可以共同分享彼此的专题成果。举例来说, progroup 成员 prouser1, prouser2, prouser3 (前小节建置的帐号数据),需要共用 /srv/project1/ 的目录, 则该目录的建置与共享可以使用如下的方式来达成:

[root@localhost ~]# mkdir /srv/project1
[root@localhost ~]# chgrp progroup /srv/project1
[root@localhost ~]# chmod 770 /srv/project1
[root@localhost ~]# ls -ld /srv/project1
drwxrwx---. 2 root progroup 6  7月  1 19:46 /srv/project1

此时 progroup 的成员即可在 project1 目录内进行任何动作。但 770 并非最好的处理方式,下一堂课读者们将会学习到 SGID 的功能, 届时才会学到较为正确的权限设置。

除了共享目录之外,在运行档的可运行权限设计上,也能够针对群组来给予可运行权,让其他人不可随意运行共用的指令。 例如让 mycat 运行与 cat 相同的结果,但是仅有 progroup 的用户能够运行,可以这样运行:

[root@localhost ~]# which cat
/bin/cat
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# cp /bin/cat /usr/local/bin/mycat
[root@localhost ~]# ll /usr/local/bin/mycat
-rwxr-xr-x. 1 root root 54048  7月  1 22:16 /usr/local/bin/mycat

[root@localhost ~]# chgrp progroup /usr/local/bin/mycat
[root@localhost ~]# chmod 750 /usr/local/bin/mycat
[root@localhost ~]# ll /usr/local/bin/mycat
-rwxr-x---. 1 root progroup 54048  7月  1 22:16 /usr/local/bin/mycat

接下来,请读者分别以 student 与 prouser1 的身份运行一次『 mycat /etc/hosts 』,即可发现不同点了。

例题:student 有个群组名为 student,任何加入 student 的用户可以在 /srv/mystudent/ 目录中进行任何动作,但没加入 student 的用户,仅能读与运行,不能写入。
  1. 先创建 /srv/mystudent 目录
  2. 修改上述目录的群组成为 student,并观察有没有运行成功
  3. 最后权限应该更改为几分才对?

4.4:课后练习操作

前置动作:请使用 unit04 的硬盘进入作业环境,并请先以 root 身分运行 vbird_book_setup_ip 指令设置好你的学号与 IP 之后,再开始底下的作业练习。

请使用 root 的身份进行如下实做的任务。直接在系统上面操作,操作成功即可,上传结果的程序会主动找到你的实做结果。

  1. 请将底下的答案写入 /root/ans04.txt 的文件中:
    1. 系统内有名为 /examdata/exam.check 的文件,这个文件的 (1)拥有者、 (2)群组 各为何?且 (3)权限是几分?
    2. 承上,该文件的文件类型是什么?
    3. 承上,请问 student 对于 exam.check 这个文件来说,具有什么权限?(写下 rwx 或 --- 等权限标志即可)
  2. 请『依序』进行如下的帐号管理任务:
    1. 创建三个用户,帐号名称分别为: examuser1, examuser2, examuser3 ,三个人都加入 examgroup 的次要群组支持,同时三个用户的密码都是『 ItIsExam 』。 (i 与 e 都是大写字符)
    2. 创建一个用户,帐号名称为 examuser4,密码为『 ItIsExam 』但这个帐号没加入 examgroup 群组
    3. 请删除系统中的 examuser5 这个帐号,同时将这个帐号的家目录与邮件文件同步删除。
    4. 有个帐号 myuser1 不小心被管理员删除了,但是这个帐号的家目录与相关邮件都还存在。请参考这个帐号可能的家目录所保留的 UID 与 GID, 并尝试以该帐号原有的 UID/GID 信息来重建该帐号。而这个帐号的密码请给予 ItIsExam 的样式。(相关建置帐号的指令,请参考 man useradd 等在线文档的说明)
    5. 让 examuser1 额外加入 student 这个群组,亦即 examuser1 至少有加入 examgroup 与 student 群组
  3. 请进行如下的权限管理任务:
    1. 使用 root 将 /etc/securetty 拷贝给 examuser4,且这个帐号要能够完整使用该文件才行。
    2. 创建一个空的文件,文件名为 /srv/examcheck.txt,这个文件可以让 examuser1 完整的使用,而 examuser2 与 examuser3 可以读取,但不能运行与写入, 至于 examuser4 什么权限都没有。
    3. examgroup 群组的成员想要共用 /srv/examdir 目录,而没有加入 examgroup 的其他人不具备任何权限,应该如何处理?
    4. /usr/local/bin/mymore 拷贝来自 /bin/more,但我只想要让 examgroup 的成员能够运行 /usr/local/bin/mymore 这个指令,其他人不能运行这个指令。
    5. 创建一个名为 /examdata/change.txt 的空文件,这个文件的拥有者为 sshd,拥有群组为 users,sshd 可读可写,users 群组成员可读, 其他人没权限。且这个文件的修改日期请调整成 2012 年 12 月 21 日 (日期正确即可,时间随便)

作业结果传输:请以 root 的身分运行 vbird_book_check_unit 指令上传作业结果。 正常运行完毕的结果应会出现【XXXXXX;aa:bb:cc:dd:ee:ff;unitNN】字样。若需要查阅自己上传数据的时间, 请在操作系统上面使用: http://192.168.251.250 检查相对应的课程文件。

修改历史:
  • 2016/07/01:加入了习题项目了!
  • 2017/03/09:修改了习题作业,比较适合做为练习之用喔!
2016/07/01以来统计人数
计数器
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计