📄 0210filepermission.htm
字号:
请特别留意的是,如果您想要开放某个目录让一些人进来的话,
请记得将该目录的 x 属性给开放呦</span>!至于目录的权限相关说明,
我们会在底下继续介绍的。<br><br>
另外,你也必须要更加的小心的是,在 Windows
底下一个档案是否具有执行的能力是藉由『 <span class=text_import2>附档名</span> 』来判断的,
例如∶.exe, .bat, .com 等等,但是在 Linux 底下,
<span class=text_import2>我们的档案是否能执行,则是藉由是否具有
x 这个属性来决定的</span>!所以,<span class=text_import2>跟档名是没有绝对的关系的</span>!
这点还请特别留意呢!稍后我们还会针对目录来稍作说明的<br><br>
<li><span class=text_import1>第二栏表示为连结占用的节点 (i-node)∶</span>
这个跟连结档 (link file) 比较有关系,我们在未来的章节会再加以介绍的。
如果是目录的话,那么就与该目录下还有多少目录有关。<br><br>
<li><span class=text_import1>第三栏表示这个档案(或目录)的『拥有人』</span>。<br><br>
<li><span class=text_import1>第四栏表示拥有人的群组。</span><br>
这里再次解释一下,在 Linux 中,你的 ID ( 如 root 或 test 等帐号均是所谓的
ID ) 即是你的身份,而且你还可以附属在一个或多个群组之下,例如刚刚我们上面提到的,你有一个团体
( 即群组 ) 代号为 testgroup ,且这个群体里有三个人,其代号分别是 test1,
test2, 与 test3,则这三个人为同一群组即 testgroup!那么如果以上图的的档案属性(-rwxrwx---)
来看,如果该档案属于
test1 所有,那么 test2, test3 亦有读、写、执行的权力,因为他们都属于同一个
group 呀!而如果您不是属于 test1, test2, test3 的任何一个人,也不属于 testgroup
这个群组时,那么您将不具备读、写、执行这个档案的权限了!<br><br>
<li><span class=text_import1>第五栏为这个档案的容量大小。</span><br><br>
<li><span class=text_import1>第六栏为这个档案的建档日期或者是最近的修改日期,</span>
分别为月份、日期及时间。请特别留意,如果您是以繁体中文来进行安装您的
Linux 时,那么预设的语系可能会被改为中文。而
<span class=text_import2>由于中文无法显示在文字型态的终端机上面,
所以这一栏会成为怪怪的乱码,这个时候,请修改一下
/etc/sysconfig/i18n 这个档案,里面的『 LC_TIME 』修改为∶『 LC_TIME=en
』再储存离开,再登入一次,就可以得到英文字形显示的日期了!</span>
那么如何修改该档案呢?呵呵!以 root 身份用 vi 修改。
另外,也可以使用『 LANG=en ls -al 』之类的语法来显示。<br><br>
<li><span class=text_import1>第七栏为这个档案的档名,</span>
如果档名之前多一个『 . 』,则代表这个档案为『<span class=text_import2>隐藏档</span>』,
例如上表第 6 行的『.bashrc_history』档名即是隐藏档,由于我们有下一个参数为
ls -al,所以连隐藏档都列出来,如果你只输入 ls 则档名有加『 . 』的档案就不会被显示出来!<br>
</ol>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 对于更详细的 ls 用法,还记得怎么查询吗?对啦!使用
man ls 或 info ls 去看看他的基础用法去!自我进修是很重要的,
因为『师傅带进门,修行在个人!』,自古只有天才学生,没有天才老师呦!加油吧!^_^
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
这七个栏位的意义是很重要的!务必清楚的知道各个栏位代表的意义呢!尤其是第一个栏位的十个权限,
那是整个 Linux 档案权限的重点之一。底下我们来做几个简单的练习,您就会比较清楚棉!
假设 test1, test2, test3 同属于 testgroup 这个群组∶<br><br>
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题一∶如果有下面的两个档案,请说明两个档案的拥有者与其相关的权限为何?<span class=text_import2>
<pre> -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</pre></span>
答∶<ul>
<li>档案『 test.txt 』的拥有人为 root ,群组为 root 。至于权限方面则只有 root
这个帐号可以存取此档案,其他人则仅能读此档案;</li><br>
<li>另一个档案『 ping_tsai 』的拥有人为 test1 ,而群组为 testgroup。其中,
test1 可以针对此档案具有可读可写可执行的权力,而同群组的 test2, test3 两个人与
test1 同样是 testgroup 的群组帐号,则仅可读可执行但不能写 (亦即不能修改),至于非
testgoup 这一个群组的人则仅可以读,不能写也不能执行!</ul>
</td></tr></table><br>
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题二∶如果我的目录为底下的样式,请问 testgroup 这个群组的成员与其他人( others )是否可以进入本目录?
<span class=text_import2>
<pre> drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/</pre></span>
答∶<ul>
<li>档案拥有者 test1 可以在本目录中进行任何工作;
<li>而 testgroup 这个群组的帐号,例如 test2, test3 亦可以进入本目录进行工作,
但是不能在本目录下进行写入的动作;
<li>至于 other 的权限中虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!</ul>
</td></tr></table><br>
<li><span class=text_import1>Linux 档案属性的重要性∶</span></li>
<div class=block2>
与 Windows 系统不一样的是,在 Linux 系统(或者说 Unix-Like
系统)当中,每一个档案都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢?
基本上,最大的用途是在『安全性』上面的。举个简单的例子,在你的系统中,关于系统服务的档案通常只有
root 才能读写,或者是执行,例如 <span class=text_import2>/etc/shadow</span>
这一个帐号管理的档案,由于该档案记录了你的系统中的所有帐号的资料,因此是很重要的一个资讯档,
当然不能让任何人读取,只有
root 才能够来读取棉!所以该档案的属性就会成为 [ <font face="细明体" color=darkblue>-rw-------
</font> ]棉!<br><br>
那么,如果你有一个开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的档案,
而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup
的团队共有三个人,分别是 test1, test2, test3 !那么我就可以将 test1 的档案属性订为
[ <font face="细明体" color=darkblue> -rwxrwx---</font> ] 来提供给
testgroup 的工作团队使用棉!这可是相当重要的。<br><br>
再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面乱搞棉!例如本来只有
root 才能做的开关机、ADSL
的拨接程式、新增或删除使用者等等的指令,若被你改成任何人都可以执行的话,
那么如果使用者不小心给你重新开机啦!重新拨接啦!等等的!那么你的系统不就会常常莫名其妙的挂掉棉!
而且万一你的使用者的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些
root 的工作!可怕吧!因此,<span class=text_import2>在你修改你的 linux 档案与目录的属性之前,
一定要先搞清楚,什么是可变的,什么是不可变的</span>!千万注意棉!
</div>
</div>
<hr><a name="filepermission_ch"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>如何改变档案权限</span><br>
<div class=block2>
好了,我们已经知道档案权限对于一个系统的安全重要性了,也知道档案的权限对于使用者与群组的相关性了,
好了,那么如何修改一个档案的权限呢?又!有多少档案的权限我们可以修改呢?
其实一个档案的权限很多嘛!大致上我们先介绍几个简单的,例如∶群组、拥有者、各种身份的权限等等。
<ul><span class=text_import2><font face="细明体">
<li>chgrp ∶改变档案所属群组
<li>chown ∶改变档案所属人
<li>chmod ∶改变档案的属性、 SUID 、等等的特性</ul></font></span>
<hr><li><a name="chgrp"></a><span class=text_import1>改变所属群组, chgrp</span></li>
<div class=block2>
改变一个档案的群组真是很简单的,直接以 chgrp 来改变即可,咦!这个指令就是
change group 的缩写嘛!对啦!这样就很好记了吧! ^_^。不过,请记得,
要改变成为的群组名称必须要在 <span class=text_import2>/etc/group</span>
里面存在的名称才行,否则就会显示错误!<br><br>
假设您是以 root 的身份登入 FC4 ,那么在您的家目录内有一个 install.log 的档案,
如何将该档案的群组改变一下呢?假设您已经知道在 /etc/group 里面已经存在一个名为 users
的群组,但是 testing 这个群组名字就不存在 /etc/group 当中了,
此时改变群组成为 users 与 testing 会有什么现象发生呢?<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chgrp [-R] dirname/filename ...</span>
<span class=term_say>参数∶
-R : 进行递回( recursive )的持续变更,亦即连同次目录下的所有档案、目录
都更新成为这个群组之意。常常用在变更某一目录的情况。
范例∶</span>
[root@linux ~]# <span class=term_command>chgrp users install.log</span>
[root@linux ~]# <span class=term_command>ls -l</span>
-rw-r--r-- 1 root <span class=term_write>users</span> 68495 Jun 25 08:53 install.log
[root@linux ~]# <span class=term_command>chgrp testing install.log</span>
chgrp: invalid group name `testing' <span class=term_note><== 发生错误讯息棉~找不到这个群组名~</span>
</pre></td></tr></table>
发现了吗?档案的群组被改成 users 了,但是要改成 testing 的时候,
就会发生错误~注意喔!发生错误讯息还是要努力的查一查错误讯息的内容才好!<br>
</div>
<hr><li><a name=chown></a><span class=text_import1>改变档案拥有者, chown</span></li>
<div class=block2>
好了,那么如何改变一个档案的拥有者呢?很简单呀!既然改变群组是 change group
,那么改变拥有者就是 change owner 棉!BINGO,对啦!那就是 chown
这个指令的用途,要注意的是,使用者必须是已经存在系统中的,也就是在
<span class=text_import2>/etc/passwd</span> 这个档案中有纪录的使用者名称才行改变。 <br><br>
chown 的用途还满多的,他还可以顺便直接修改群组的名称呢!此外,
<span class=text_import2>如果要连目录下的所有次目录或档案同时更改档案拥有者的话,直接加上
-R </span>的参数即可!我们来看看语法与范例∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chown [-R] 帐号名称 档案或目录</span>
[root@linux ~]# <span class=term_command>chown [-R] 帐号名称:群组名称 档案或目录</span>
<span class=term_say>参数∶
-R : 进行递回( recursive )的持续变更,亦即连同次目录下的所有档案、目录
都更新成为这个群组之意。常常用在变更某一目录的情况。
范例∶</span>
[root@linux ~]# <span class=term_command>chown bin install.log</span>
[root@linux ~]# <span class=term_command>ls -l</span>
-rw-r--r-- 1 <span class=term_write>bin</span> users 68495 Jun 25 08:53 install.log
[root@linux ~]# <span class=term_command>chown root:root install.log</span>
[root@linux ~]# <span class=term_command>ls -l</span>
-rw-r--r-- 1 <span class=term_write>root root</span> 68495 Jun 25 08:53 install.log
</pre></td></tr></table>
嗯!知道如何改变档案的群组与拥有者了,那么什么时候要使用 chown 或 chgrp
呢?!或许您会觉得奇怪吧?!是的,确实有时候需要变更档案的拥有者的,
最常见的例子就是在 copy 档案给你之外的其他人时,我们使用最简单的 cp 来说明好了∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cp 来源档案 目的档案</span>
</pre></td></tr></table>
假设您今天要将 .bashrc 这个档案拷贝成为 .bashrc_test ,且是要给 bin 这个人,您可以这样做∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cp .bashrc .bashrc_test</span>
[root@linux ~]# <span class=term_command>ls -al .bashrc*</span>
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
-rw-r--r-- 1 root root 395 Jul 13 11:31 .bashrc_test
</pre></td></tr></table>
哇!怎么办? .bashrc_test 还是属于 root 所有,如此一来,即使你将档案拿给 bin
这个使用者了,那他仍然无法修改的( 看属性就知道了吧! ),
所以你就必须要将这个档案的拥有者与群组修改一下棉!知道如何修改了吧!?呵呵! <br>
</div>
<hr><li><a name=chmod></a><span class=text_import1>改变九个属性, chmod</span></li>
<div class=block2>
档案属性的改变使用的是 chmod 这个指令,但是,属性的设定方法有两种,
分别可以使用数字或者是符号来进行属性的变更。我们就来谈一谈∶<br><br>
<li><span class=text_import1>数字类型改变档案权限</span></li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -