类UNIX系统的文件系统权限初级篇
<div>类UNIX系统的文件系统权限初级篇<br><br>
<div >1. 文件系统与权限介绍<br>
2. 权限设置 chmod<br>
3. find与chmod的高级应用<br>
4. 结束<br>
<br>
<br>
今天看到一句话:<br>
<font color="Red">UNIX is very user-friendly. It's just picky who its friends are.</font><br>
<br>
<br>
<b>1. 文件系统与权限介绍</b><br>
<br>
对于一个视窗用户, 接触linux的第一个门槛, 应该就是EXT文件系统的权限了<br>
<br>
类UNIX操作系统都以其简洁又严谨的权限, 赢得了服务器操作系统的美称<br>
如果设置一个user, 登陆系统, 任凭你怎么修改, 删除, 破坏文件<br>
重新建立一个用户, 登陆, 丝毫没有任何影响, 系统也没有任何损坏<br>
这也是类UNIX下, 没有病毒( 或者说, 感染病毒也根本不碍事 )的根本<br>
<br>
视窗用户因为他们的文件系统和操作系统权限设计比较shit, 每天生活在苦闷中<br>
如果系统盘是microsot宣称的最高级最先进最安全的NTFS分区格式,<br>
那么非常抱歉, 这个系统, 除了超级管理员administrator或者有此权限的用户,<br>
其他任何人都无法正常使用, 这不, 一个power user登陆了,<br>
一会儿出现天网无法写日志错误, 天网防火墙就自动关闭了,<br>
一会儿又什么写错误, 一连10个错误, 虽然跑起来了的桌面系统, <br>
但防火墙什么都没有, 没有任何安全保障,<br>
这就是microsoft所谓的高级技术的安全分区;<br>
<br>
如果用administrator用户登陆, 那桌面系统不是正常了吗?!<br>
对啊, 是正常了, 但是如果用户不小心运行了下载下来的带恶意代码的文件,<br>
或者浏览了某张带有恶意代码的网页, <br>
对不起, 恶意代码也是按照administrator的上下文权限,<br>
可以把你的window系统破坏得淋漓尽致<br>
(别忘记, internet explorer浏览器就是以漏洞著称的)<br>
<br>
如果使用FAT32之类的分区, 挖卡卡, 病毒们更喜欢了, <br>
因为那种分区根本没有权限设置, 一个普通用户就可以往系统里面写东西<br>
修改或者删除系统文件, 直接等于找死!!<br>
<br>
病毒这关过不去, 那就更别提服务器系统所需要的磁盘配额了<br>
<br>
别无他求, 视窗用户必须牺牲把 10%或者更多的CPU资源,<br>
浪费在病毒的实时防护和注册表的实时监视上,<br>
或者磁盘使用检测来实现磁盘配额上<br>
并且, 优秀的防病毒软件及附带的升级病毒库服务一般价格不菲, 可怜的人呐...<br>
<br>
<br>
类UNIX系统的权限很简洁<br>
对于初学者来说, 一个文件, 有3种权限, 读,写,运行<br>
非常正确, 就3种权限, 所以我说很简洁<br>
<br>
文件它有三种权限所属, 1拥有者, 2组群, 3其它用户<br>
所有者的读写运行, 所属组群读写运行, 和其它用户读写运行<br>
可以实现 9种权限的模式了!<br>
<br>
看一个文件<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">dorainm@laptop: ~ $ ls -l dorainm <br>
-rwxrw-r-- 1 dorainm master 7165 Jun 4 13:50 dorainm<br>
dorainm@laptop: ~ $ </div><br>第一组的 rwx 表示所有者具有 读写,运行权限<br>
第二组的 rw- 表示所属组群具有 读写权限<br>
第三组的 r-- 表示所有者具有 读权限<br>
读一个文件, 就是查看文件里面的东西, 把文件从硬盘中加载到内存中的权限<br>
写一个文件, 就是修改文件的内容<br>
运行一个文件, 因为类UNIX系统没有注册表,<br>
而视窗系统就是用注册表来维护扩展名的文件打开方式的<br>
所以, 类UNIX下没有扩展名的概念, 如果某个普通文件是程序或者shell程序<br>
只要给它加上运行权限, okay, 它就是被操作系统认可的可执行程序了<br>
<br>
看某个目录<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">dorainm@laptop: ~ $ ls -l<br>
... ...<br>
drwxr-xr-x 7 dorainm master 4096 May 28 22:48 workspace<br>
... ...</div><br>第一个d代表是目录文件( directory )<br>
每组的表达跟文件一样( 类UNIX系统下, 一切皆文件 )<br>
读一个目录, 就是列出目录底下的所有文件及子目录<br>
写一个目录, 就是在该目录上拥有新建或者删除文件或者子目录的权限<br>
运行一个目录, 就是拥有进入一个目录的权限<br>
<br>
虽然只有 读写运行3种权限, 三种权限所属, 三三9种<br>
一个文件的9种权限加上其父目录的9种权限,<br>
简单的3种权限设置, 演化出 九九81种权限模式,<br>
几乎适应任何一种服务或者文件共享或者什么的应用了!<br>
很神奇吧!!<br>
<br>
<br>
<br>
<b>2. 权限设置 chmod ( change mode )</b><br>
<br>
介绍这么多关于权限的文字, 现在讲下设置权限的操作,<br>
类UNIX系统下最重要的命令之一 chmod<br>
<br>
chmod [选项] [权限] 文件...<br>
<br>
选项常用的有<br>
-c 显示修改<br>
-R 递归方式修改目录下的所有文件和子目录及子目录下的所有<br>
-f 忽略错误信息<br>
<br>
权限的表达有<br>
u+x 添加(+)所有者( user )执行权限(x)<br>
o-r 剥夺(-)其它( other )用户的读权限(r)<br>
g=w 设置(=)组群( group )的写权限(w)<br>
当然, 还可以复杂地书写<br>
u+wr,o=r,g-xw<br>
追加所有者的读写权限, 设置其它用户为写权限, 去除组群的写执行权限<br>
看得懂吧?<br>
<br>
每个权限对应一个位, 比如 二进制的 000三位分别代表读写执行<br>
那么 r-x 就是 二进制的101了, 对应的权限数字就是 4+1 = 5<br>
同理, 权限6, 二进制为 110, 对应就是 rw-<br>
所以, chmod 中, 还可以用数字来表达权限, <br>
比如 chmod -R 764 dorainm/<br>
等同样 chmod -R u=rwx,g=rw,o=r dorainm/<br>
<br>
文件可以用正则表达式来描述, 比如通配符之类的<br>
<br>
<br>
<br>
<br>
<b>3. find与chmod的高级应用</b><br>
<br>
find是类UNIX系统中最强悍的文件查找工具了<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">dorainm@laptop: mode $ find<br>
.<br>
./dorainm<br>
./ch01<br>
./ch01/file01<br>
./ch01/file02<br>
dorainm@laptop: mode $ </div><br>就是显示当前目录及其子目录下的所有文件和目录名字<br>
<br>
我们可以增加参数, 比如<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">find -type f -name '*.c'</div><br>就是递归方式列出当前目录下的所有以.c结尾的文件名(不要目录)<br>
<br>
当然, 也可以用管道(pipe)来实现, 消耗高一些<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">$ find | grep dorainm</div><br>find 中有个比较好用的执行参数, 比如<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">find -type f -exec ls -l {} \;</div><br>根据 ls -l, 这条命令就是把find查找到的文件, 以长文件信息形式列出<br>
好玩吧<br>
<br>
实际管理服务器中, 我们会遇到好多问题, 比如一个php站点./php<br>
要求任何 *.php文件只读形式存在,<br>
上传目录./php/updata下的文件可以被读写删除<br><br><div class="msgheader">QUOTE:</div><div class="msgborder">chown -Rc apache ./php<br>
chgrp -Rc apache ./php<br>
find ./php -type -d -exec chmod 555 {} \;<br>
find ./php -type -f -name '*.php' -exec chmod 444 {} \;<br>
find ./php/updata -type -d -exec chmod 775 {} \;<br>
find ./php/updata -type -f -exec chmod 664 {} \;</div><br>好了, 千军万马都可以被 find 和 -R 递归参数来完成<br>
<br>
有人要问, 果然UNIX很麻烦, 视窗系统只要文件传过去就可以用了<br>
哎, 试想一下你的系统被入侵后,<br>
攻击者也一个 del * /s /f /q /a 把你数据甚至系统全部毁掉<br>
[quote]<br>
del win32下的文件删除命令<br>
/s 递归遍历所有文件子目录及下的所有<br>
/f 强制删除只读文件<br>
/q 安静模式,不出现询问<br>
/a 所有文件都检查,包括系统文件、隐藏文件等<br>
[quote]<br>
天呐,你该怎么向你的衣食父母--客户们交代啊!!<br>
双机热备份之类的数据恢复技术, 都是建立在大把大把的人.民.币基础上的!<br>
<br>
而类UNIX下的这个网站, 因为文件没有写权限, .php程序文件不会被篡改,<br>
目录没有写权限, 就无法删除目录结点下的文件了!!<br>
<br>
<br>
<br>
<b>4. 结束</b><br>
<br>
UNIX初学者对权限很怕, 比如写个shell, 要运行, 又得 chmod u+x *.sh一下<br>
或者一些支持UNIX的用户, 对于chmod的权限设置也觉得很复杂很忌讳说<br>
<br>
其实, 这是类UNIX系统的一个亮点, 一个优良设计!!<br>
即要实现服务器的安全性, 又要追求易用,<br>
在这种矛盾的取舍中, 只有rwx三种权限的简洁又严谨的权限设置的类UNIX系统<br>
绝对是当前的最佳解决方案<br>
<br>
引回文章首的那句话:<br>
UNIX is very user-friendly. It's just picky who its friends are.</div>
</div> 挺老的东西,挺……
页:
[1]
