Linux被设计为多用户操作系统。在企业级系统中,会有多个用户访问同一个系统。但是,如果任何用户都可以访问和修改其他用户或系统拥有的文件,这肯定会带来安全风险。这就是为什么UNIX和Linux(Linux是类UNIX系统)具有内置的安全措施,确保文件或目录只能由所需用户访问、修改或执行。在Linux中,哪个用户有权访问哪个文件取决于两个因素:文件所有权文件权限了解文件所有权和权限对Linux用户来说至关重要。本文将介绍相关内容。Linux中的文件归属注意:本文提到的文件也包括目录(在Linux中,目录也属于文件)。Linux中的每个文件和目录都有三个所有者:用户用户是文件的所有者。当您创建文件时,文件的所有者就是您。所有权也可以更改(我们稍后会谈到)。组每个用户都是组的一部分。一个组由多个用户组成,这是在多用户环境中管理用户的一种方式。例如,如果您有一个开发组、一个质量保证组和一个系统管理组都访问同一个系统,那么您应该为他们创建单独的组。通过这种方式,您可以有效地管理文件和系统的安全。这也节省了时间,因为您无需手动为每个用户添加权限,只需将他们添加到相关组并更改组的权限即可。本文将在后面详细介绍。即使您是系统上的唯一用户,您仍然是许多组的成员。像Ubuntu这样的发行版也会为用户创建同名的组。注意:运行groups命令以查看您属于哪些用户组。其他“其他”可以被认为是系统中所有用户的超组。基本上,任何有权访问系统的人都属于该组。一般来说,“用户”是单个用户,“组”是用户的集合,“其他”是系统中所有用户组成的。Linux中的文件权限Linux中的每个文件和目录对于所有三种类型的所有者都具有以下三种权限:文件权限读取-可以查看或复制文件内容;write-可以修改文件内容;execute-可以运行文件(如果它是可执行的)。目录权限读取-可以列出所有子文件,并可以从目录中复制文件;write-可以在目录中添加或删除文件(还需要执行权限);execute——可以进入目录。Linux中的文件权限和所有权以上是关于文件权限和所有权的基础知识,下面通过实例来介绍一下。在Linux中,您可以使用stat或ls命令查看文件权限。如果使用ls命令,需要带上-l选项,会看到如下输出:-rwxrw-r--1gliugliu457May1011:55filename.txt以上输出的解释如下如下:filetype:表示文件的类型,d表示目录,-表示普通文件,l表示符号链接;permissions:显示文件的权限,本文后面会详细介绍;硬链接数:显示文件是否有硬链接,默认为1;owner:文件所属的用户;组:有权访问该文件的组。一次只能有一个组是文件的所有者;filesize:文件的大小(单位为b);修改时间:文件的最后修改时间;文件名:文件或目录的名称。以上就是我们对ls-l命令输出的解释,现在主要看权限部分。在上面的命令中,可以看到权限显示为9个字符,格式如下:rwxrw-r--每个字母代表一个具体的权限:r:读权限;w:写权限;x:执行权限;-:没有权限。权限总是按照读取、写入和执行的顺序,即rwx。然后,按照用户、组和其他的顺序为所有三种类型的所有者设置这些权限。结合上图,我们可以理解:1)文件的属主拥有对该文件的读、写和执行权限。但是这个文件的所有者是谁?在ls-l命令中,有这个信息的输出(也就是用户gliu);2)文件所属组有读写权限,没有执行权限。那是哪一组?在ls-l命令中有这个信息的输出(即用户组gliu);3)该文件只对其他人(即有权访问系统的每个人)具有读取权限。您不需要知道它是哪一个,因为“其他”指的是所有用户。再看一下ls-l命令的输出,我们应该可以看到文件的权限和所有者:-rwxrw-r--1gliugliu457May1011:55filename.txt文件filename.txt所属给用户gliu,并且gliu对该文件具有读、写和执行权限;用户组gliu中的所有用户对该文件具有读写权限,其他用户对该文件具有只读权限。注意:root用户拥有超级权限,通常它对所有文件都有读、写和执行权限,即使你在文件权限中看不到它。单个用户可以是多个组的成员,但只有主要组是用户创建文件的组。可以使用id命令找到用户的主要组,例如id-gn。如果要查询自己的主组,则省略该参数。通过上面的描述,我们知道了如何查看文件的权限。接下来,让我们看看如何更改文件的权限和所有权。在Linux中更改文件权限在Linux中,我们可以使用chmod命令来更改文件权限。注意:权限过去称为访问模式,因此chmod是更改访问模式的缩写。chmod命令有两种使用方式:绝对模式(Symbolicmode)在绝对模式下使用chmod在绝对模式下,权限以数字形式(准确地说是八进制)表示。在这个系统中,每个文件权限都由一个数字表示。r(read,read)=4w(write,write)=2x(execute,execute)=1–(无权限)=0有了这些数值,就可以组合起来,所以可以用一个数来表示整个集合的权限。数字权限0-1--x2-r-3(2+1)-wx4r--5(4+1)r-x6(4+2)rw-7(4+2+1)rwx文件名以上的文件。txt,如果用数字表示权限,那是什么?没错,应该是764。通过上面的描述,我们知道什么数字代表什么权限了,那么现在我们来看看如何更改文件权限。如果想改变文件filename.txt的权限,想让所有人都可以读写,但是不能执行,可以使用如下命令:chmod666filename.txt然后用ls-l命令查看,您会发现文件的权限已更改:-rw-rw-rw-1gliugliu457May1011:55filename.txt在符号模式下使用chmod绝对模式的问题是您需要提供三个所有者数量.所以,此时你可以使用符号模式的chmod命令。在符号模式下,所有者由以下符号表示:u=用户所有者(userowner)g=组所有者(groupowner)o=other(其他)a=所有用户(user+group+other)然后,符号模式权限更改是使用数学运算符执行的:添加权限–删除权限=用新权限覆盖现有权限现在,让我们看看如何在符号模式下使用chmod命令。在前面的例子中,如果想给组(组所有者)增加执行权限,可以这样使用chmod命令:chmodg+xfilename.txt现在再次使用ls-l命令查看文件,并且您会看到它已分配给该组已添加执行权限:-rw-rwxrw-1gliugliu457May1011:55filename.txt此外,可以将对多个权限的更改组合到一个命令中。如果我们要删除其他用户的读写权限,增加执行权限,同时为组内的用户增加执行权限,可以使用如下命令完成:chmodo-rw+x,u+xfilename.txt执行后结果如下:-rwxrwx--x1gliugliu457May1011:55filename.txt如果想同时更改所有三个用户的权限,可以这样做:chmoda-xfilename.txt这将删除所有用户的执行权限:-rw-rw----1gliugliu457May1011:55filename.txt更改文件所有权要更改文件的所有权,您可以使用chown命令。这意味着改变所有者。您可以按如下方式更改文件的所有者:chown
