文件权限、所有权和粘泻位
看下文件的路径 ls -l
Linux系统中的每一个文件都与多种类型的权限相关联。在这些权限中,我们通常要和三类 权限打交道(用户、用户组以及其他用户)。
用户(user)是文件的所有者。用户组(group)是多个用户的集合(由系统管理员指定), 系统 这些用户对文件进行某种形式的访问。 用户(others)是除文件用户或用户组之外 的任何人。
第1列输出明确了后面的输出。其中第一个字母的对应关系如下所示。
-——普通文件
d——目录
c——字符设备
b——块设备
l——符号链接
s—— 接字
p——管道
剩下的部分可以划分成三组,每组3个字符(--- --- ---)。第一组的3个字符(---)对应 用户权限(所有者),第二组对应用户组权限,第三组对应其他用户权限。这9个字符(即9个权 限)中的每一个字符指明是否其设置了某种权限。如果已设置,对应位置上会出现一个字符,否 则出现一个'-' 表明没有设置对应的权限。
目录的读权限(r) 读取目录中文件和子目录的列表;
目录的写权限(w) 在目录中创建或删除文件或目录;
目录的执行权限(x)指明是否可以访问目录中的文件和子目录。
目录有一个特殊的权限,叫做 (sticky bit)。如果目录设置了 位,只有创建该目 录的用户才能删除目录中的文件,即使用户组和其他用户也有写权限,也无能无力。 位出现 在其他用户权限中的执行权限(x)位置。它使用t或T来表示。如果没有设置执行权限,但设置 了 位,就使用t;如果同时设置了执行权限和 位,就使用T。
例如:
------rwt , ------rwT
设置目录 位的一个 型例子就是 /tmp。
在ls -l的每一行输出中,字符串slynux slynux分别对应所属用户和所属用户组。第一
个slynux代表所属用户,第二个slynux代表用户组的所有者。
实例
可使用chmod命令设置文件权限。
假设需要设置权限:rwx rw- r--。 可以像下面这样使用chmod:
$ chmod u=rwx g=rw o=r filename
在这里:
u——指定用户权限
g——指定用户组权限
o——指定其他实体权限
可以对用户、用户组和其他用户用 + 进行添加权限,用 - 删除权限。 文件已经具有权限rwx rw- r--,现在需要增加可执行权限,方法如下:
$ chmod o+x filename
给所有权限类别(即用户、用户组和其他用户)增加可执行权限:
$ chmod a+x filename
其中,a表示全部(all)。 如果需要删除权限,则使用 -,例如:
$ chmod a-x filename
也可以用 进制数来设置权限。权限由3位 进制数来表示,每一位按 序分别对应用户、用户 组和其他用户。
读、写和执行权限都有与之对应的 一的 进制数:
r--=4
-w-=2
--x=1
我们可以将权限序列的 进制值相加来获得所需的权限组合,例如:
rw- = 4 + 2 = 6 r-x = 4 + 1 = 5
权限序列 rwx rw- r--的数字表示形式如下:
rwx = 4 + 2 + 1 = 7 rw- = 4 + 2 = 6 r-- = 4
因此,rwx rw- r--等于764,那么使用 进制值设置权限的命令为: $ chmod 764 filename
让我们再看一些其他有关文件和目录的操作。
1. 更改所 要更改文件的所有权,可以使用chown命令:
$ chown user.group filename
例如:
$ chown slynux.slynux test.sh
在这里,slynux既是用户名,也是用户组名。 2. 设置
位是一种应用于目录的权限类型。通过设置 位,使得只有目录的所有者才能够删除 目录中的文件,即使用户组和其他用户 有足够的权限也不能执行删除操作。
要设置 位,利用chmod将 +t应用于目录: $ chmod a+t directory_name
3. 以递归的方式设置 有时候需要以递归的方式修改当前目录下的所有文件和子目录的权限,方法如下:
$ chmod 777 . -R
选项 -R指定以递归的方式修改权限。