重点回顾
绝对路径:『一定由根目录 / 写起』; 相对路径:『不是由 / 写起』
特殊目录有:., .., -, ~, ~account 需要注意;
与目录相关的指令有:cd, mkdir, rmdir, pwd 等重要指令;
rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』指令;
使用者能使用的指令是依据 PATH 变数所规定的目录去搜寻的;
不同的身份(root 与一般用户)系统预设的 PATH 并不相同。差异较大的地方在于 /sbin, /usr/sbin ;
ls 可以检视档案的属性,尤其 -d, -a, -l 等选项特别重要!
档案的复制、删除、移动可以分别使用:cp, rm , mv 等指令来操作;
检查档案的内容(读档)可使用的指令包括有:cat, tac, nl, more, less, head, tail, od 等
cat -n 与 nl 均可显示行号,但预设的情况下,空白行会不会编号并不相同;
touch 的目的在修改档案的时间参数,但亦可用来建立空档案;
一个档案记录的时间参数有三种,分别是 access time(atime), status time (ctime),modification time(mtime),ls 预设显示的是 mtime。
除了传统的 rwx 权限之外,在 Ext2/Ext3 档案系统中,还可以使用 chattr 与 lsattr 设定及观察隐藏属性。常见的包括只能新增资料的 +a 与完全不能更动档案的 +i 属性。
新建档案/目录时,新档案的预设权限使用 umask 来规范。预设目录完全权限为 drwxrwxrwx, 档案则为-rw-rw-rw-。
档案具有 SUID 的特殊权限时,代表当使用者执行此一 binary 程式时,在执行过程中使用者会暂时具有程式拥有者的权限目录具有 SGID 的特殊权限时,代表使用者在这个目录底下新建的档案之群组都会与该目录的群组名称相同。
目录具有 SBIT 的特殊权限时,代表在该目录下使用者建立的档案只有自己与 root 能够删除!
观察档案的类型可以使用 file 指令来观察;
搜寻指令的完整档名可用 which 或 type ,这两个指令都是透过 PATH 变数来搜寻档名;
搜寻档案的完整档名可以使用 whereis 或 locate 到资料库档案去搜寻,而不实际搜寻档案系统;
利用 find 可以加入许多选项来直接查询档案系统,以获得自己想要知道的档名。
本章习题:
情境模拟题一:假设系统中有两个帐号,分别是 alex 与 arod ,这两个人除了自己群组之外还共同支援一个名为 project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权,且该目录不许其他人进入查阅。 请问该目录的权限设定应为何?请先以传统权限说明,再以 SGID 的功能解析。
目标:瞭解到为何专案开发时,目录最好需要设定 SGID 的权限!
前提:多个帐号支援同一群组,且共同拥有目录的使用权!
需求:需要使用 root 的身份来进行 chmod, chgrp 等帮用户设定好他们的开发环境才行! 这也
是管理员的重要任务之一!
首先我们得要先制作出这两个帐号的相关资料,帐号/群组的管理在后续我们会介绍, 您这里先照着底下
的指令来制作即可:
[root@www ~]#groupadd project <==增加新的群组
[root@www ~]#useradd -G project alex <==建立 alex 帐号,且支援 project
[root@www ~]#useradd -G project arod <==建立 arod 帐号,且支援 project
[root@www ~]#id alex <==查阅 alex 帐号的属性
uid=501(alex) gid=502(alex) groups=502(alex),501(project) <==确实有支援!
[root@www ~]#id arod
uid=502(arod) gid=503(arod) groups=503(arod),501(project)
然后开始来解决我们所需要的环境吧!
1. 首先建立所需要开发的专案目录:
[root@www ~]# mkdir /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxr-xr-x 2 root root 4096 Sep 29 22:36 /srv/ahome
2. 从上面的输出结果可发现 alex 与 arod 都不能在该目录内建立档案,因此需要进行权限与属性
的修改。 由于其他人均不可进入此目录,因此该目录的群组应为 project,权限应为 770 才合理。
[root@www ~]# chgrp project /srv/ahome
[root@www ~]# chmod 770 /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxrwx--- 2 root project 4096 Sep 29 22:36 /srv/ahome
# 从上面的权限结果来看,由于 alex/arod 均支援 project,因此似乎没问题了!
3. 实际分别以两个使用者来测试看看,情况会是如何?先用 alex 建立档案,然后用 arod 去处理
看看。
[root@www ~]# su - alex <==先切换身份成为 alex 来处理
[alex@www ~]$ cd /srv/ahome <==切换到群组的工作目录去
[alex@www ahome]$ touch abcd <==建立一个空的档案出来!
[alex@www ahome]$ exit <==离开 alex 的身份
[root@www ~]# su - arod
[arod@www ~]$ cd /srv/ahome
[arod@www ahome]$ ll abcd
-rw-rw-r-- 1 alex alex 0 Sep 29 22:46 abcd
# 仔细看一下上面的档案,由于群组是 alex ,arod 并不支援!
# 因此对于 abcd 这个档案来说, arod 应该只是其他人,只有 r 的权限而已啊!
[arod@www ahome]$ exit
4. 由上面的结果我们可以知道,若单纯使用传统的 rwx 而已,则对刚刚 alex 建立的 abcd 这个档
案来说, arod 可以删除他,但是却不能编辑他!这不是我们要的样子啊!赶紧来重新规划一下。
5. 加入 SGID 的权限在里面,并进行测试看看:
[root@www ~]# chmod 2770 /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxrws--- 2 root project 4096 Sep 29 22:46 /srv/ahome
测试:使用 alex 去建立一个档案,并且查阅档案权限看看:
[root@www ~]# su - alex
[alex@www ~]$ cd /srv/ahome
[alex@www ahome]$ touch 1234
[alex@www ahome]$ ll 1234
-rw-rw-r-- 1 alex project 0 Sep 29 22:53 1234
# 没错!这才是我们要的样子!现在 alex, arod 建立的新档案所属群组都是 project,
# 由于两人均属于此群组,加上 umask 都是 002,这样两人才可以互相修改对方的档案!
6. 所以最终的结果显示,此目录的权限最好是『2770』
,所属档案拥有者属于 root 即可,至于群组
必须要为两人共同支援的 project 这个群组才行!
什么是绝对路径与相对路径
绝对路径的写法为由 / 开始写,至于相对路径则不由 / 开始写!此外,相对路径为相对于目前工作目录的路径!
如何更改一个目录的名称?例如由 /home/test 变为 /home/test2
mv /home/test /home/test2
PATH 这个环境变数的意义?
这个是用来指定执行档执行的时候,指令搜寻的目录路径。
umask 有什么用处与优点?
umask 可以拿掉一些权限,因此,适当的定义 umask 有助于系统的安全, 因为他可以用来建立预设的目录或档案的权限。
当一个使用者的 umask 分别为 033 与 044 他所建立的档案与目录的权限为何?
在 umask 为 033 时,则预设是拿掉 group 与 other 的 w(2)x(1) 权限,因此权限就成为『档案 -rw-r--r-- , 目录 drwxr--r-- 』而当 umask 044 时,则拿掉 r 的属性,因此就成为『档案 -rw--w--w-,目录 drwx-wx-wx』
什么是 SUID ?
当一个指令具有 SUID 的功能时,则:
SUID 权限仅对二进位程式(binary program)有效;
执行者对于该程式需要具有 x 的可执行权限;
本权限仅在执行该程式的过程中有效 (run-time);
执行者将具有该程式拥有者 (owner) 的权限。
当我要查询 /usr/bin/passwd 这个档案的一些属性时(1)传统权限;(2)档案类型与(3)档案的隐藏属性,可以使用什么指令来查询?
ls -al
file
lsattr
尝试用 find 找出目前 linux 系统中,所有具有 SUID 的档案有哪些?
find / -perm +4000 -print
阅读(2210) | 评论(0) | 转发(0) |