Linux系统上的不同文件具有不同的权限。 这既是为了文件存储时的安全性,也是为了使Linux各模块之间的访问和调度更加顺畅。 本文介绍了Linux系统的文件权限和访问模式。
权限
所有者权限u :文件所有者可以执行的操作
组权限g :文件所属用户组可以执行的操作
外部权限o:(其他权限) :其他用户可以执行的操作。
文件查看权限
可以使用ls -l命令查看有关文件访问权限的信息。
$ls -l /home/amrood
- rwxr-xr----1amroodusers 1024 nov 200:10 my file
rwxr-xr----1amroodusers 1024 nov 200336010 mydir
第一列包含文件或目录的权限。
第一列中的字符可以分为三组。 每个组有三个,分别代表不同的权限。 读取(r )、写入(w )、执行) x )。
第一个字符集(2-4)表示文件所有者的权限,- rwxr-xr---- -表示所有者具有读取(r )、写入(w )、执行(x )的权限。
第二个组中的字符(5-7)表示文件所属用户组的权限,-rwxr-xr--表示该组具有读取(r )和执行(x )权限,但没有写入权限
第三组中的字符(8-10 )表示所有其他用户的权限,而rwxr-xr--表示其他用户只能读取(r )文件。
文件访问模式
文件权限是Linux系统的第一条安全线,基本权限是读(r )、写(w )、执行(x )。
读取(用户可以读取文件信息并查看文件的内容。
写入w :用户可以编辑文件、将内容写入文件、删除文件内容。
执行x :用户可以将文件作为程序运行。
目录访问模式
目录的访问模式与文件类似,但略有不同。
r :用户可以查看目录中的文件
写入w :用户可以从当前目录中删除文件或创建文件
运行)授予用户遍历目录的权限,如运行cd和ls命令。
改变权限
可以使用chmod (更改模式)命令更改对文件或目录的访问权限。 权限可以用符号或数字表示。
使用符号表示权限
对初学者来说,最简单的做法是使用符号更改文件或目录的权限。 () ),删除) -允许添加权限或指定特定权限。
符号说明
向文件或目录添加权限
删除文件或目录的权限
=设定指定的权限
下面的示例更改testfile文件的权限:
$ ls-l测试文件
- rwxrwxr----1amroodusers 1024 nov 200:10测试文件
$chmod o wx testfile
$ ls-l测试文件
- rwxrwxrwx1amroodusers 1024 nov 200:10测试文件
$ chmod u-x测试文件
$ ls-l测试文件
- rw-rwx rwx1amroodusers 1024 nov 200336010测试文件
$chmod g=rx testfile
$ ls-l测试文件
- rw-r-xrwx1amroodusers 1024 nov 200336010测试文件
也可以同时使用多个符号。
$chmod o wx,u-x,g=rx测试文件
$ ls-l测试文件
- rw-r-xrwx1amroodusers 1024 nov 200336010测试文件
用数字表示权限
除了符号外,还可以使用八进制数指定特定权限,如下表所示。
数字说明权限
0没有任何权限-----
1执行权限--x
2写入权限-w-
3执行权限和写入权限:1(执行)2(写入)=3 -wx
4读取权限r--
5读取和执行权限:4(读取)1(执行)=5 r-x
6读和写权限:4(读2 )写)=6 rw-
7所有权限:4(读取)2(写入)1(执行)=7 rwx
以下示例首先使用ls -1命令显示testfile文件的权限,然后使用chmod命令更改权限:
$ ls-l测试文件
- rwxrwxr----1amroodusers 1024 nov 200:10测试文件
$ chmod 755测试文件
p>$ls -l testfile-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
更改所有者和用户组
在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。
有两个命令可以改变文件的所有者或群组:
chown:chown 命令是“change owner”的缩写,用来改变文件的所有者。
chgrp:chgrp 命令是“change group”的缩写,用来改变文件所在的群组。
chown 命令用来更改文件所有者,其语法如下:
$ chown user filelist
user 可以是用户名或用户ID,例如
$ chown amrood testfile
$
将 testfile 文件的所有者改为 amrood。
注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。
chgrp 命令用来改变文件所属群组,其语法为:
$ chgrp group filelist
group可以是群组名或群组ID,例如
$ chgrp special testfile
$
将文件 testfile 的群组改为 special。
SUID和SGID位
在Linux中,一些程序需要特殊权限才能完成用户指定的操作。
例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,一般用户没有读取和写入的权限。但是当我们使用 passwd 命令来更改密码时,需要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必须要给我们一些特殊权限,才可以向 /etc/shadow 文件写入内容。
Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;如果程序不带SUID位,则会根据程序使用者的权限来运行。
SGID也是一样。一般情况下程序会根据你的组权限来运行,但是给程序设置SGID后,就会根据程序所在组的组权限运行。
如果程序设置了SUID位,就会在表示文件所有者可执行权限的位置上出现‘s’字母;同样,如果设置了SGID,就会在表示文件群组可执行权限的位置上出现‘s’字母。如下所示:
$ ls -l /usr/俭朴的信封/passwd
-r-sr-xr-x 1 root 俭朴的信封 19031 Feb 7 13:47 /usr/俭朴的信封/passwd*
$
上面第一列第四个字符不是‘x’或‘-’,而是‘s’,说明 /usr/俭朴的信封/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。
注意:小写字母‘s’说明文件所有者有执行权限(x),大写字母‘S’说明程序所有者没有执行权限(x)。
如果在表示群组权限的位置上出现SGID位,那么也仅有三类用户可以删除该目录下的文件:目录所有者、文件所有者、超级用户 root。
为一个目录设置SUID和SGID位可以使用下面的命令:
$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname
$
以上就是Linux系统文件权限和访问模式的解析了,只要充分了解了Linux系统文件权限才能了解Linux文件之间的访问模式。