📄 0210filepermission.htm
字号:
<li><span class=text_import1>档案拥有者</span></li>
<div class=block2>
初次接触 Linux 的朋友大概会觉得很怪异,怎么『<span class=text_import1>Linux
有这么多使用者,还分什么群组,有什么用?</span>』。
这个『使用者与群组』的功能可是相当健全而好用的一个安全防护呢!怎么说呢?
由于 Linux 是个多人多工的系统 ( 已经提过若干次棉!
),因此可能常常会有多人同时使用这部主机来进行工作的情况发生,
为了考虑每个人的隐私权以及每个人的喜好的工作环境,
因此,这个『档案拥有者』的角色就显的相当的重要了!<br><br>
例如当你将你的 e-mail
情书转存成档案之后,放在您自己的家目录,您总不希望被其他人看见自己的情书吧?
这个时候,你就把该档案设定成『只有档案拥有者,就是我,才能看与修改这个档案的内容』,
那么即使其他人知道你有这个相当『有趣』的档案,不过由于您有设定适当的权限,
所以其他人自然也就无法知道该档案的内容棉!<br><br>
</div>
<li><span class=text_import1>群组概念</span></li>
<div class=block2>
那么群组呢?为何要设定档案还有所属的群组?其实,
<span class=text_import1>群组最简单的功能之一,就是当您在团队开发资源的时候最有用啦</span>!
举个例子来说好了,假如在我的主机上面有两个团体,这第一个团体名称为
testgroup 而他的成员是 test1, test2, test3 三个,第二个团体名称为 treatgoup
他的团员为 treat1, treat2, treat3,这两个团体之间是互相有竞争性质的,
但是却又要缴交同一份报告,然而每组团员又需要同时可以修改自己的团体内任何人所建立的档案,
且不能让非自己团体的其他人看到自己的档案内容!这个时候怎么办?<br><br>
呵呵!在 Linux 底下可就很简单啦!我可以经由简易的档案权限设定,就能限制非自己团队(
亦即是群组棉 )的其他人不能够阅览内容棉!而且亦可以让自己的团队成员可以修改我所建立的档案!
同时,如果我自己还有私人隐密的文件,仍然可以设定成让自己的团队成员也看不到我的档案资料。
很方便吧!<br><br>
另外,如果 teacher 这个帐号是 testgroup 与 treatgroup 这两个群组的老师,
他想要同时观察两者的进度,因此需要两边的群组都能够进去观看,这个时候,您可以设定
teacher 这个帐号,『同时支援 testgroup 与 treatgroup 这两个群组!』,也就是说,
<span class=text_import2>每个人都可以有多个群组的支援呢</span>!<br><br>
这样说或许你还不容易理解这个使用者与群组的关系吧?没关系,我们可以使用目前『家庭』的观念来进行解说喔!
假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人,
而这个家庭是登记在王大毛的名下的!所以,『王大毛家有三个人,分别是王大毛、王二毛与王三毛』,
而且这三个人都有自己的房间,并且共同拥有一个客厅喔!
<ul>
<li>由于王家三个人各自拥有自己的房间,所以,王二毛虽然可以进入王三毛的房间,
但是二毛不能翻三毛的抽屉喔!那样会被三毛
K 的!因为抽屉里面可能有三毛自己私人的东西,例如情书啦,日记啦等等的,
这是『私人的空间』,所以当然不能让二毛拿棉!</li><br>
<li>由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机啦、翻阅报纸啦、坐在沙发上面发呆啦等等的!
反正,只要是在客厅的玩意儿,三兄弟都可以使用喔!因为大家都是一家人嘛!</li></ul>
这样说来应该有点晓得了喔!那个『王大毛家』就是所谓的『群组』棉,
至于三兄弟就是分别为三个『使用者』,而这三个使用者是在同一个群组里面的喔!
而三个使用者虽然在同一群组内,但是我们可以设定『权限』,
好让某些使用者个人的资讯不被群组的所有人查询,以保有个人『私人的空间』啦!
而设定群组共享,则可让大家共同分享喔!<br><br>
</div>
<li><span class=text_import1>其他人的概念</span></li>
<div class=block2>
好了,那么今天又有个人,叫做张小猪,他是张小猪家的人,与王家没有关系啦!
这个时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家,
更不要说进到王三毛的房间啦!不过,如果张小猪透过关系认识了三毛,并且跟王三毛成为好朋友,
那么张小猪就可以透过三毛进入王家啦!呵呵!没错!那个张小猪就是所谓的『其他人,
Others 』棉!<br><br>
因此,我们就可以知道啦,在 Linux 里面,任何一个档案都具有『User,
Group 及 Others』三个权限!我们可以将上面的说明以底下的图示来解释∶<br>
<center><img src="0210filepermission/0210filepermission_1.jpg"
title="每个档案的拥有者、群组与 others 的示意图"
alt="每个档案的拥有者、群组与 others 的示意图"><br>
图一、每个档案的拥有者、群组与其他人的示意图</center><br>
此时,以王三毛为例,王三毛这个『档案』的拥有者为王三毛,他属于王大毛这个群组,
而张小猪相对于王三毛,则只是一个『其他人(others)』而已。<br><br>
不过,这里有个特殊的人物要来介绍的,那就是『万能的天神』!这个天神具有无限的神力,
所以他可以到达任何他想要去的地方,呵呵!那个人在
Linux 系统中的身份代号是『 root 』啦!所以要小心喔!<span class=text_import2>那个
root 可是『万能的天神』喔!</span><br><br>
无论如何,『使用者身份』,与该使用者所支援的『群组』概念,在 Linux
的世界里面是相当的重要的,他可以帮助您让您的多工 Linux 环境变的更容易管理!更详细的
『身份与群组』 设定,我们将在 <a href="0410accountmanager.php">帐号管理</a>
再进行解说。底下我们将针对档案系统与档案权限来进行说明。<br><br>
</div>
<li><span class=text_import1>Linux 使用者身份与群组记录的档案</span></li>
<div class=block2>
在我们 Linux 系统当中,预设的情况下,所有的系统上的帐号与一般身份使用者,还有那个 root
的相关资讯,都是记录在 /etc/passwd 这个档案内的。至于密码则是记录在 /etc/shadow 这个档案下。
此外, Linux 所有的群组名称都纪录在 /etc/group 内!这三个档案可以说是
Linux 系统里面帐号、密码、群组资讯的集中地棉!不要随便删除这三个档案啊! ^_^<br><br>
至于更多的与帐号群组有关的设定,还有这三个档案的格式,不要急,我们在第四篇讲到帐号时,
会再跟大家详细的介绍的!这里先有概念即可。
</div>
</div>
<hr><a NAME="filepermission"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">Linux 档案权限概念</span><br>
<div class=block1>
大致了解了 Linux 的使用者与群组之后,接著下来,我们要来谈一谈,
那么这个档案的权限要如何针对这些所谓的『使用者』与『群组』来设定该档案的权限呢?
这个部分是相当的重要的,尤其对于初学者来说,因为档案的权限与属性是学习
Linux 的一个相当重要的关卡,如果没有这部份的概念,那么您将老是听不懂别人在讲什么呢!
尤其是当您在您的萤幕前面出现了『Permission
deny』的时候,不要担心,『肯定是权限设定错误』啦!呵呵!好了,闲话不多聊,赶快来瞧一瞧先∶<br><br>
<hr><a name="filepermission_perm"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>Linux 档案属性</span><br>
<div class=block2>
嗯!既然要让你了解 Linux 的档案属性,那么有个重要的也是常用的指令就必须要先跟你说棉!那一个?!就是『
<span class=text_import1>ls</span> 』这一个 list 档案的指令棉!在你以 root
的身份登入 Linux 之后,下达『ls -al 』看看,会看到底下的几个咚咚∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ls -al</span>
total 248
drwxr-x--- 9 root root 4096 Jul 11 14:58 .
drwxr-xr-x 24 root root 4096 Jul 9 17:25 ..
-rw------- 1 root root 1491 Jun 25 08:53 anaconda-ks.cfg
-rw------- 1 root root 13823 Jul 10 23:12 .bash_history
-rw-r--r-- 1 root root 24 Dec 4 2004 .bash_logout
-rw-r--r-- 1 root root 191 Dec 4 2004 .bash_profile
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
-rw-r--r-- 1 root root 100 Dec 4 2004 .cshrc
drwx------ 3 root root 4096 Jun 25 08:35 .ssh
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
-rw-r--r-- 1 root root 5976 Jun 25 08:53 install.log.syslog<span class=term_write>
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 属性 ][连结][拥有者][群组][档案容量][ 修改日期 ][ 档名 ]</span>
</pre></td></tr></table>
ls 是『list』的意思,与在早期的 DOS 年代的指令 dir 类似功能。
而参数『-al』则表示列出所有的档案 ( 包含隐藏档,就是档名前面第一个字元为 . 的那种档案 )
。如上所示,在你第一次以 root 身份登入 Linux 时,如果你输入指令后,应该有上列的几个东西,
先解释一下上面七个栏位个别的意思∶<br><br>
<center><img src="0210filepermission/0210filepermission_2.jpg"
title="档案属性的示意图"
alt="档案属性的示意图"><br>
图二、档案属性的示意图</center><br>
<ol>
<li><span class=text_import1>第一栏代表这个档案的属性∶</span>
这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个属性∶<br>
<center><img src="0210filepermission/0210filepermission_3.jpg"
title="档案的十个属性内容"
alt="档案的十个属性内容"><br>
图三、档案的十个属性内容</center><br>
<ul>
<li>第一个属性代表这个档案是『<span class=text_import2>目录、档案或连结档</span>等等』∶</li>
<ul>
<li>当为[<span class=text_import1> d</span> ]则是目录,例如上表的第 11 行;
<li>当为[<span class=text_import1> -</span> ]则是档案,例如上表的第 5 行;
<li>若是[<span class=text_import1> l</span> ]则表示为连结档(link file);
<li>若是[<span class=text_import1> b</span> ]则表示为装置档里面的可供储存的周边设备;
<li>若是[<span class=text_import1> c</span> ]则表示为装置档里面的序列埠设备,例如键盘、滑鼠。
</ul><br>
<li>接下来的属性中,三个为一组,且均为『<span class=text_import2>rwx</span>』
的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(excute)∶</li>
<ul>
<li>第一组为『<span class=text_import2>拥有人的权限</span>』,以第 5
行为例,该档案的拥有人可以读写,但不可执行;
<li>第二组为『<span class=text_import2>同群组的权限</span>』;
<li>第三组为『<span class=text_import2>其他非本群组的权限</span>』。
</ul>
</ul><br>
<b>范例</b>∶若有一个档案的属性为『<span class=text_import2>-rwxr-xr--</span>』,简单的可由下面说明之∶
<div class=block2><span class=text_import2><font face="细明体">
<pre>[-][rwx][r-x][r--]
1 234 567 890
1 为∶代表这个档名为目录或档案(上面为档案)
234为∶拥有人的权限(上面为可读、可写、可执行)
567为∶同群组使用者权限(上面为可读可执行)
890为∶其他使用者权限(上面为仅可读)</pre>
</font></span></div>
上面的属性情况代表一个档案、这个档案的拥有人可读可写可执行、但同群组的人仅可读与执行,
非同群组的使用者仅可读的意思!<br><br>
除此之外,<span class=text_import2>需要特别留意的是 x 这个标号</span>!
若档名为一个目录的时候,例如上表中的 .ssh 这个目录∶<br><br>
<table width=70% border=1 cellspacing=0 cellpading=3><tr><td><pre>
<font face="细明体" color=darkblue>drwx------ 3 root root 4096 Jun 25 08:35 .ssh</font>
</pre></td></tr></table><br>
可以看到这是一个目录,而且只有 root 可以读写与执行。但是若为底下的样式时,请问非 root
的其他人是否可以进入该目录呢?<br><br>
<table width=70% border=1 cellspacing=0 cellpading=3><tr><td><pre>
<font face="细明体" color=darkblue>drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh</font>
</pre></td></tr></table><br>
咦!似乎好像是可以喔!因为有可读[ r ]存在嘛!『错!』答案是非 root
这个帐号的其他使用者均不可进入 .ssh 这个目录,为什么呢?
<span class=text_import2>因为 x 与 目录 的关系相当的重要,
如果您在该目录底下不能执行任何指令的话,那么自然也就无法进入了,因此,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -