Linux的文件权限与目录配置
Linux最优秀的地方之一就在于他的多用户多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了。 Linux一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。若管理不当,你的Linux主机将会变的很“不苏湖!
5.1 使用者与群组
每个文件都有相当多的属性与权限,其中最重要的可能就是文件的拥有者的概念了。
- 文件拥有者
这个“使用者与群组”的功能可是相当健全而好用的一个安全防护呢。 由于Linux是个多用户多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个“文件拥有者”的角色就显的相当的重要了!
例如当你将你的e-mail情书转存成文件之后,放在你自己的主文件夹,你总不希望被其他人看见自己的情书吧? 这个时候,你就把该文件设置成“只有文件拥有者,就是我,才能看与修改这个文件的内容”, 那么即使其他人知道你有这个相当“有趣”的文件,不过由于你有设置适当的权限, 所以其他人自然也就无法知道该文件的内容啰! - 群组
群组最有用的功能之一,就是当你在团队开发资源的时候啦! 举例来说,假设有两组专题生在我的主机里面,第一个专题组别为projecta,里面的成员有 class1, class2, class3三个;第二个专题组别为projectb,里面的成员有class4, class5, class6。 这两个专题之间是有竞争性质的,但却要缴交同一份报告。每组的组员之间必须要能够互相修改对方的数据, 但是其他组的组员则不能看到本组自己的文件内容,此时该如何是好?
在Linux下面这样的限制是很简单啦!我可以经由简易的文件权限设置,就能限制非自己团队(亦即是群组啰) 的其他人不能够阅览内容啰!而且亦可以让自己的团队成员可以修改我所创建的文件! 同时,如果我自己还有私人隐密的文件,仍然可以设置成让自己的团队成员也看不到我的文件数据。 很方便吧!
另外,如果teacher这个帐号是projecta与projectb这两个专题的老师, 他想要同时观察两者的进度,因此需要能够进入这两个群组的权限时,你可以设置teacher这个帐号, “同时支持projecta与projectb这两个群组!”,也就是说:每个帐号都可以有多个群组的支持呢!
这样说或许你还不容易理解这个使用者与群组的关系吧?没关系,我们可以使用目前“家庭”的观念来进行解说喔! 假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人, 而这个家庭是登记在王大毛的名下的!所以,“王大毛家有三个人,分别是王大毛、王二毛与王三毛”, 而且这三个人都有自己的房间,并且共同拥有一个客厅喔!
使用者的意义:由于王家三人各自拥有自己的房间,所以, 王二毛虽然可以进入王
三毛的房间,但是二毛不能翻三毛的抽屉喔!那样会被三毛K的! 因为抽屉里面可
能有三毛自己私人的东西,例如情书啦,日记啦等等的,这是“私人的空间”,所以当
然不能让二毛拿啰!
群组的概念:由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机啦、 翻阅
报纸啦、坐在沙发上面发呆啦等等的! 反正,只要是在客厅的玩意儿,三兄弟都可
以使用喔! 因为大家都是一家人嘛!
这样说来应该有点晓得了喔!那个“王大毛家”就是所谓的“群组”啰, 至于三兄弟就是
分别为三个“使用者”,而这三个使用者是在同一个群组里面的喔! 而三个使用者虽
然在同一群组内,但是我们可以设置“权限”, 好让某些使用者个人的信息不被群组
的拥有者查询,以保有个人“私人的空间”啦! 而设置群组共享,则可让大家共同分
享喔!
- 其他人
今天又有个人,叫做张小猪,他是张小猪家的人,与王家没有关系啦! 这个
时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家, 更不要说进到王三毛的房间啦!不过,如果张小猪通过关系认识了三毛,并且跟王三毛成为好朋友, 那么张小猪就可以通过三毛进入王家啦!呵呵!没错!那个张小猪就是所谓的“其他人,Others”啰!
“使用者身份”,与该使用者所支持的“群组”概念,在Linux的世界里面是相当的
重要的, 他可以帮助你让你的多任务Linux环境变的更容易管理!
只要让 Linux 某个帐号加入某个群组,该帐号就可
以使用该群组能够存取的资源! 每个帐号可以加入的群组个数基本上是没有限制的!
5.2Linux文件权限
文件的权限要如何针对这些所谓的“使用者”与“群组”来设置呢?
是当你在你的屏幕前面出现了“Permission deny”的时候,不要担心,“肯定是权限设置错误”啦!
5.2.1 Linux文件属性
由于本章后续的chgrp, chown等指令可能都需要使用root的身份才能够处理,所以这里建议您以root的身份来学习!要注意的是, 我们还是不建议你直接使用 root 登陆系统,建议使用 su - 这个指令来切换身份喔!离开 su - 则使用 exit 回到 dmtsai 的身份即可!
ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为“ . ”的文件)。如上所示,在你第一次以root身份登陆Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:
5.2.2 文件属性与权限变更
- chgrp :改变文件所属群组
- chown :改变文件拥有者
- chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
改变所属群组, chgrp
5.2.3 目录与文件权限意义
5.2.4 Linux文件种类与扩展名
5.3 Linux目录配置
5.3.1 目录配置依据——FHS
a | 可分享的 | 不可分享的 |
---|---|---|
不变的 | /usr(软件放置处) | /etc(配置文件) |
/opt(第三方协议软件) | $12 | |
导管 | $1 |
root
在 Linux 中以“帐号”的角度来看指的是“系统管理员!”的身份, 以“目录”的角度来看指的是根目录,就是 /
5.3.2 目录树
在Linux中所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头~
然后再一个一个的分支下来,有点像是树枝状啊~因此,我们也称这种目录配置方式为:“目录树(directory tree)”
主要特性:
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
5.3.3 绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意喔!因为根据文件名
写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径
(relative)。 这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
而你必须要了解,相对路径是以“你当前所在路径的相对位置”来表示的。举例来说,你目前在
/home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?
- cd /var/log (absolute)
- cd …/var/log (relative)
因为你在 /home 下面,所以要回到上一层 (…/) 之后,才能继续往 /var 来移动的! 特别注
意这两个特殊的目录:
. :代表当前的目录,也可以使用 ./ 来表示;
… :代表上一层目录,也可以 …/ 来代表。
这个 . 与 … 目录概念是很重要的,你常常会看到 cd … 或 ./command 之类的指令下达方式,
就是代表上一层与目前所在目录的工作状态喔!很重要的呐!
例题:如何先进入/var/spool/mail/目录,再进入到/var/spool/cron/目录内?答:由
于/var/spool/mail与/var/spool/cron是同样在/var/spool/目录中,因此最简单的指令下达方法
为: - cd /var/spool/mail
- cd …/cron
如此就不需要在由根目录开始写起了。这个相对路径是非常有帮助的!尤其对于某些软件开
发商来说。 一般来说,软件开发商会将数据放置到/usr/local/里面的各相对目录,你可以参考
图3.2.1的相对位置。 但如果使用者想要安装到不同目录呢?就得要使用相对路径啰!
网络文件常常提到类似“./run.sh”之类的数据,这个指令的意义为何?答:由于指令的执行需要变量(bash章节才会提到)的支持,若你的可执行文件放置在本目录,并且本目录
并非正规的可执行文件目录(/bin, /usr/bin等为正规),此时要执行指令就得要严格指定该可
执行文件。“./”代表“本目录”的意思,所以“./run.sh”代表“执行本目录下, 名为run.sh的文
件”啰!