⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0210filepermission.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 4 页
字号:
			<div class=block2>
			Linux 档案的基本属性就有九个,分别是 owner/group/others 组别的 read/write/excute 属性,
			先复习一下刚刚上面提到的资料∶<ul><span class=text_import2>-rwxrwxrwx</span></ul>
			这九个属性是三个三个一组的!其中,我们可以使用数字来代表各个属性,各属性的对照表如下∶
			<ul><span class=text_import2><font face="细明体">r:4<br>w:2<br>x:1</font></span></ul>
			同一组 (owner/group/others) 的三个属性 (r/w/x) 是需要累加的,例如当属性为
			[-rwxrwx---] 则是∶<ul><span class=text_import2><font face="细明体">
			owner = rwx = 4+2+1 = 7<br>
			group = rwx = 4+2+1 = 7<br>
			others= --- = 0+0+0 = 0</font></span></ul>
			所以等一下我们设定属性的变更时,该属性的数字就是 770 啦!变更属性的指令 chmod 的语法是这样的∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chmod [-R] xyz 档案或目录</span>
<span class=term_say>参数∶
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回( recursive )的持续变更,亦即连同次目录下的所有档案、目录
     都更新成为这个群组之意。常常用在变更某一目录的情况。
</pre></td></tr></table>

			举例来说,如果要将 .bashrc 这个档案所有的属性都打开,那么就下达∶ <br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
<span class=term_write>-rw-r--r--</span>  1 root root 395 Jul  4 11:45 .bashrc
[root@linux ~]# <span class=term_command>chmod 777 .bashrc</span>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
<span class=term_write>-rwxrwxrwx</span>  1 root root 395 Jul  4 11:45 .bashrc
</pre></td></tr></table>

			看到了吗?属性改变了喔!由于一个档案有三组属性,所以你可以发现上面 777 
			为三组,而由于我们将所有的属性都打开,所以数字都相加,亦即『
			<span class=text_import2><font face="细明体">r+w+x = 4+2+1 = 7</font></span>』<br><br>

			那如果要将属性变成『 <span class=text_import2>-rwxr-xr--</span> 』呢?那么就成为
			<span class=text_import2>[4+2+1][4+0+1][4+0+0]=754</span> 棉!所以你需要下达 
			<span class=text_import2><font face="细明体">chmod 754 filename</font></span>。
			最常发生的一个问题就是,常常我们以 vi 编辑一个 shell 的文字档后,他的属性通常是 
			-rw-rw-rw- 也就是 666 的属性,如果要将他变成可执行档,并且不要让其他人修改此一档案的话,
			那么就需要 -rwxr-xr-x 这一个 755 的属性,所以 
			<span class=text_import2><font face="细明体">chmod 755 test.sh</font></span> 就需要这样做棉!<br><br>

			另外,有些档案你不希望被其他人看到,例如 -rwxr-----,那么就下达 
			<span class=text_import2><font face="细明体">chmod 740 filename</font></span> 吧! <br><br>

			<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
			例题三∶将刚刚您的 .bashrc 这个档案的属性改回原来的 -rw-r--r--<br>
			答∶<ul>chmod 644 .bashrc</ul>
			</td></tr></table><br>
			</div>

			<li><span class=text_import1>符号类型改变档案权限</span></li>
			<div class=block2>
			还有一个改变属性的方法呦!从之前的介绍中我们可以发现,基本上就九个属性分别是(1)user 
			(2)group (3)others 三群啦!那么我们就可以藉由 <span class=text_import1>u, g, o</span> 
			来代表三群的属性!此外, <span class=text_import1>a</span> 则代表 all 
			亦即全部的三群!那么读写的属性就可以写成了 r, w, x 棉!也就是可以使用底下的方式来看∶<br><br>

			<table width=80% cellspacing=0 cellpadding=2 border=1 style="color: darkblue ;">
			<tr align=center>
			<td>chmod</td><td>u<br>g<br>o<br>a</td>
			<td style="font: 11pt '细明体'">+(加入)<br>-(除去)<br>=(设定)</td>
			<td>r<br>w<br>x</td><td>档案或目录</td></table><br>

			来实作一下吧!假如我们要『设定』一个档案的属性为『-rwxr-xr-x』时,基本上就是∶
			<ul><li>user (u)∶具有可读、可写、可执行的权限;<br>
			<li>group 与 others (g/o)∶具有可读与执行的权限。</ul>
			所以就是∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chmod  u=rwx,go=rx  .bashrc</span>
<span class=term_say># 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空白字元!</span>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
</pre></td></tr></table>

			请注意, u=rwx,og=rx 这一段文字之间并没有空白字元隔开呦!不要搞错棉!
			那么假如是『 -rwxr-xr-- 』?可以使用『 <span class=text_import2>chmod u=rwx,g=rx,o=r filename</span>
			 』来设定。此外,如果我不知道原先的档案属性,而我只想要增加 .bashrc 
			这个档案的每个人均可写入的权限,那么我就可以使用∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
<span class=term_write>-rwxr-xr-x</span>  1 root root 395 Jul  4 11:45 .bashrc
[root@linux ~]# <span class=term_command>chmod  a+w  .bashrc</span>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
<span class=term_write>-rwxrwxrwx</span>  1 root root 395 Jul  4 11:45 .bashrc
</pre></td></tr></table>

			而如果是要将属性去掉而不更动其他的属性呢?!例如要拿掉所有人的 x 的属性,则∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chmod  a-x  .bashrc</span>
[root@linux ~]# <span class=term_command>ls -al .bashrc</span>
<span class=term_write>-rw-rw-rw-</span>  1 root root 395 Jul  4 11:45 .bashrc
</pre></td></tr></table>

			知道 +, -, = 的不同点了吗?对啦! + 与 ˉ 的状态下,只要是没有指定到的项目,
			则该属性『不会被变动』,例如上面的例子中,由于仅以
			ˉ 拿掉 x 则其他两个保持当时的值不变!呵呵!多多实作一下,你就会知道如何改变属性棉!
			这在某些情况底下很好用的~举例来说,您想要教一个朋友如何让一个程式可以拥有执行的权限,
			但您又不知道该档案原本的权限为何,此时,利用 chmod a+x filename ,就可以让该程式拥有执行的权限了。
			是否很方便?
			</div>
		</div>
	</div>

	<hr><a name="filepermission_dir"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>目录属性的意义∶</span><br>
	<div class=block2>
		刚刚上面我们提到的属性几乎都是针对一般档案的特性在说明,那么如果是针对目录时,
		那个 r, w, x 对目录是什么意义呢?简单的说∶

		<ul><li><span class=text_import1>r (read contents in directory)</span>∶
			表示具有读取目录结构清单的权限,所以当您具有读取 (r) 一个目录的权限时,
			您就可以利用 ls 这个指令将该目录的内容列表显示出来!<br><br>

		<li><span class=text_import1>w (modify contents of directory)</span>∶
			这个可写入的权限对目录来说,是很了不起的!
			因为他表示您将具有异动该目录结构清单的权限,也就是底下这些权限∶<br><br><ul><span class=text_import2>
			<li>建立新的档案与目录;
			<li>删除已经存在的档案与目录(不论该档案是属于谁的!)
			<li>将已存在的档案或目录进行更名;
			<li>搬移该目录内的档案、目录位置。</ul><br></span>
			所以说,如果您是一般身份使用者,例如鸟哥的帐号 dmtsai ,那么在 /home/dmtsai 这个家目录内,
			无论是谁 (包括 root) 建立的档案,无论该档案属于谁,无论该档案的属性是什么, 
			dmtsai 这个使用者都『有权力将该档案删除』的喔!<br><br>

		<li><span class=text_import1>x (access directory)</span>∶
			这个在上头我们已经稍微提过了,这个 x 与能否进入该目录有关呢!
		</ul>

		好了,那么我们来简单的做个测试看看,底下可能会有很多您没有见过的指令,
		不要担心,先照著作看看,等到未来提到该指令时,您自然就会了解了。<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cd /tmp</span>
[root@linux tmp]# <span class=term_command>mkdir testing</span>
[root@linux tmp]# <span class=term_command>chmod 744 testing</span>
[root@linux tmp]# <span class=term_command>touch testing/testing</span>
[root@linux tmp]# <span class=term_command>chmod 600 testing/testing</span>
<span class=term_say># 这个 mkdir 是在建立目录用的指令!是 make directory 的缩写。
# 我们用 root 的身份在 /tmp 底下建立一个名为 testing 的目录,
# 并且将该目录的权限变为 744 ,该目录的拥有者为 root 喔!
# 另外, touch 可以用来建立一个没有内容的档案,因此, touch testing/testing
# 可以建立一个空的 /tmp/testing/testing 档案喔!</span>
[root@linux tmp]# <span class=term_command>ls -al</span>
drwxr--r--   2 root root 4096 Jul 14 01:05 testing
<span class=term_say># 仔细看一下,目录的权限是 744 ,且所属群组与使用者均是 root 喔!
# 接下来,我们将 root 的身份切换成为一般身份使用者。
# 鸟哥的系统里面有个 dmtsai 的一般身份使用者帐号,所以切换身份成为 dmtsai </span>
[root@linux tmp]# <span class=term_command>su dmtsai</span>
<span class=term_say># 那个 su 的指令是用来『变换身份』的一个指令,我们未来会详细介绍。
# 注意看,底下这一行中,发现使用者变为 dmtsai 了,而且提示字元变成 $ 了!
# 也就是说,现在操作系统的人变成 dmtsai 了!那么 dmtsai 这个人对于 
# /tmp/testing 是属于 others 的权限,那他可以对 /tmp/testing 干嘛?</span>
[dmtsai@linux tmp]$ <span class=term_command>ls -l testing</span>   <span class=term_note>&lt;== 此时身份为 dmtsai</span>
total 0
?---------  ? ? ? ?           ? testing
<span class=term_say># 可以查阅里面的资讯喔!因为dmtsai 具有 r 的权限,不过,毕竟权限不够,
# 很多资料竟然是问号 (?) 来的~怪怪的紧~</span>
[dmtsai@linux tmp]$ <span class=term_command>cd testing</span>  <span class=term_note>&lt;== 此时身份为 dmtsai</span>
bash: cd: testing/: Permission denied
<span class=term_say># 发现了吗?即使我们具有 r 的权限,但是没有 x ,所以 
# dmtsai 无法进入 /tmp/testing 喔!</span>
[dmtsai@linux tmp]$ <span class=term_command>exit</span>
[root@linux tmp]# <span class=term_command>chown dmtsai testing</span>
<span class=term_say># 使用 exit 就可以离开 su 的功能了。我们将这个 testing 目录的拥有者设定为
# dmtsai ,此时 dmtsai 就成为 owner 了,那么这个使用者又能干麻呢?</span>
[root@linux tmp]# <span class=term_command>su dmtsai</span>
[dmtsai@linux tmp]$ <span class=term_command>cd testing</span>  <span class=term_note>&lt;== 此时身份为 dmtsai</span>
[dmtsai@linux testing]$ <span class=term_command>ls -l</span>  <span class=term_note>&lt;== 此时身份为 dmtsai</span>
-rw-------  1 root root 0 Jul 14 01:13 testing
<span class=term_say># 再切换身份成为 dmtsai ,此时就能够进入 testing 了!查阅一下内容。
# 发现了 testing 这个档案存在喔!权限是只有 root 才能够存取~
# 那我们测试一下能否删除呢?</span>
[dmtsai@linux testing]$ <span class=term_command>rm testing</span>  <span class=term_note>&lt;== 此时身份为 dmtsai</span>
rm: remove write-protected regular empty file `testing'? <span class=term_command>y</span>
<span class=term_say># 竟然可以删除!这样理解了吗?!</span>
</pre></td></tr></table>

		透过上面这个简单的步骤,您就可以清楚的知道, x 在目录当中是与『能否进入该目录』有关,
		至于那个 w 则具有相当重要的权限,因为他可以让使用者删除、更新、新建档案或目录,
		是个很重要的参数啊!这样可以理解了吗?! ^_^
	</div>

	<hr><a name="filepermission_type"></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 之前,就跟大家灌输过一个概念,那就是,任何装置在 Linux 底下都是档案,
		不仅如此,连资料沟通的介面也有专属的档案在负责~所以,您会了解到, Linux 的档案种类真的很多~
		除了前面提到的那个 -, d 亦即所谓的一般档案与目录档案之外,还有哪些种类的档案呢?<br><br>

		<li><span class=text_import1>档案种类∶</span></li>
		<div class=block2>
			我们在刚刚的属性介绍中提到了最前面的标

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -