Linux继承了Unix的文件所属者和权限的概念。基本的原因是这样可以在网络系统中方便的使用,在网络系统中用户可以使用各种各样的程序、文件等等。很显然,这需要保持其组织性和安全性。我们不想一个普通用户使用一个潜在能使整个系统变成垃圾的程序。这里同样存在安全和隐私问题。用一个现实的例子说明:我们不想让Bill看Bob写给在R&D工作的Janet的情书。(因为Janet是Bill的未婚夫)。最终,重要的是要知道什么是属于我的、你的和每个人的。
在本文刚开始提到的,很大的优势是Linux拥有多用户的概念——事实上很多不同的用户可以使用同一台计算机或者同一个用户可以使用同一台计算机处理不一样的事情。在这里文件权限可以帮助解决一些很让人费解的问题。我们将会介绍一些关于文件的拥有者和对文件操作的基本概念。在这里我们不会很深入细节。我们把它留在Linux系统管理员课程中。我们将会介绍怎样;理解文件权限符号和怎样修改文件以使它们更加安全。
文件权限符号
如果你在你的home目录里运行ls -l命令,则你将会得到一个文件列表,文件类表将包含以下类似内容:
-rw-r--r-- 1 bob users 1892 Jul 10 18:30 linux_course_notes.txt
我们从右向左对该输出进行解释。上面的语句表示文件linux_course_notes.txt创建于7月10号下午6:30分,其大小为1892字节。它属于users组(即,使用该计算机的人)。它属于bob用户并且只是一个文件。接下来的是文件权限符号。
让我们看一下这些符号代表什么含义:
横线-:将权限分成三种类型,第一部分指的是拥有者(bob)的权限。
在rw之前的-意味着这是一个普通文件,包含任意类型的数据。如果是一个目录,则在开头会是一个d而不是一个-。
接下来的表示bob可以读和写(修改)他拥有的文件。这里逻辑是正确的,因为你可以对你自己的文件做任何操作。
第二个-后面的第二部分符号是组所对应的权限。对于文件访问Linux可以创建不同类型的组。在跟bob同一个组中的任何用户都可以读该文件,但是不能写(修改)该文件。这是一种非常普通的情况。作为一个用户的你,可能像去掉别人对你文件的读取权限。我们将会在后面介绍。
在两个--(这里是两个适应为组没有写权限)之后,是全体用户的权限。任何进入该计算机的用户,无论是从内部还是外部(通过网络),都能读该文件。再次说明,如果我们选择,我们可以去掉用户对该文件的读取权限。
让我们看一个其他的例子。查看不同文件权限类型的有趣地方是/bin目录。这里的命令每个用户都可以使用。我们看一下gzip命令,一个Linux系统文件压缩工具。
-rwxr-xr-x 1 root root 53468 May 1 1999 gzip
可以看出有一些不同的地方。程序的名字、时间和大小都是标准的。即使是很明显的信息是不同的,但是表示的含义跟前面一样。
变化的是拥有者和组。root是文件的拥有者并且他在root组中。root用户是root组仅有的成员。
这是一个可执行文件,所以字母x在字符中。
这个文件可以被任何人执行:拥有者(root)、组(root)和所有其他可以使用该计算机的用户。
正如我们所提到的,这个文件是一个程序,所以除了root的其他用户没有必要拥有写(修改)权限。所以除了root用户其他用户都没有w权限。
如果我们查看/sbin目录下的文件,这个目录下的文件只有root用户能够使用和执行,权限如下所示:
-rwxr--r-- 1 root root 1065 Jan 14 1999 cron
‘cron’是Linux系统的一个程序,它允许程序在特定的时间和特定的情况下自动运行。在这里可以看出仅仅它的拥有者root用户可以使用该程序。对于其他用户没有x权限。
希望你喜欢这里对Linux文件权限简单的介绍。下面来讲一下改变特定的权限。
chmod
chmod是一个Linux命令,这个命令可以让你设置一个文件的权限(设置谁能读/写/执行)。
命令格式:chmod permissions file
chmod permission1_permission2_permission3 file
当使用chmod命令时,你需要清楚你正在为三种类型的Linux用户设置权限。因此,当设置权限时,是你自己为自己、你所在的组和其他的所有用户设置权限。这些用户称为:
Owner
Group
World
因此,当为一个文件设置权限时,你将会为设置所有三个层次的权限,而不仅仅是为一个用户设置。
chmod命令实际上有下面的语法:
chmod owner group world FileName
既然已经理解为三个层次的用户设置权限,你要做的仅仅是想想你能够设置什么样的权限。
Linux允许每个文件有三种类型的权限:
read:读
write:写(修改)
execute:执行
把它们放在一起
所以在外行人来看,如果你想一个文件可以被所有人读取并只能被你自己修改,你会将chomd命令携程下面的结构:
COMMAND : OWNER : GROUP : WORLD : PATH
chmod read & write read read FileName
chmod 644 myDoc.txt
上面的数字是什么?!?
计算机喜欢数字而不是单词。不幸的是你必须跟数字打交道。看一下`ls -l`命令的输出:
-rw-r--r-- 1 gcawood iqnection 382 Dec 19 6:49 myDoc.txt
你需要将读、写、执行转换成下表中与之对应的8进制数据:
4 读(r)
2 写(w)
1 执行(×)
练习实例:
将mydoc.txt修改成用户可读:chmod 400
将mydoc.txt修改成组可读:chmod 040
将mydoc.txt修改成所有用户可读:chmod 004
将mydoc.txt修改成用户可写:chmod 200
将mydoc.txt修改成组可写:chmod 020
将mydoc.txt修改成任何人可写:chmod 002
将mydoc.txt修改成用户可执行:chmod 100
将mydoc.txt修改成组可执行:chmod 010
将mydoc.txt修改成任何人可执行:chmod 001
等等!我还没明白……没有足够的权限像设置我想要的!
好问题。你需要将数字加起来获得其它类型的权限……
所以,要好好想想!
7 = 4+2+1 (读/写/执行)
6 = 4+2 (读/写)
5 = 4+1 (读/执行)
4 = 4 (读)
3 = 2+1 (写/执行)
2 = 2 (写)
1 = 1 (执行)
chmod 666 mydoc.txt,是该文件可以被任何人读/写!(恶魔喜欢这样的文件!)
chmod 755 mydoc.txt,文件拥有者有读/写/执行权限,所在组有读/执行权限,其他所有用户有读/执行权限。
chmod 777 mydoc.txt,所有的用户都有读/写/执行权限。
原文地址:http://www.linux.org/threads/file-permissions-chmod.4094/