如何在Linux上使用chmod命令
使用Linux的" chmod"命令控制谁可以访问文件,搜索目录以及运行脚本。该命令修改了Linux文件权限,乍一看看上去很复杂,但是一旦知道它们是如何工作的,它实际上非常简单。
chmod修改文件权限
在Linux中,谁可以对文件或者目录执行操作是通过权限集控制的,共有三组权限。一组用于文件所有者,另一组用于文件组的成员,最后一组用于其他所有人。
权限控制可以在文件或者目录上执行的操作。它们允许或者阻止文件的读取,修改或者执行(如果是脚本或者程序)。对于目录,权限决定着谁可以" cd"进入目录以及谁可以创建或者修改其中的文件目录。
我们可以使用chmod命令来设置每个权限。要查看文件或者目录上设置了哪些权限,我们可以使用ls。
查看和了解文件权限
我们可以使用-l(长格式)选项使ls列出文件和目录的文件许可权。
ls -l
在每行上,第一个字符标识所列出的条目的类型。如果是破折号(-
),则为文件。如果是字母d,则为目录。
接下来的9个字符代表三组权限的设置。
前三个字符显示拥有该文件的用户的权限(用户权限)。
中间的三个字符显示文件组成员的权限(组权限)。
最后三个字符显示不在前两个类别中的任何人的权限(其他权限)。
每组权限中都有三个字符。字符是存在许可或者不存在许可的指示符,它们可以是破折号(-)或者字母。如果字符是破折号,则表示未授予许可。如果字符是" r"," w"或者" x",则表示已授予该权限。
这些字母代表:
r:读取权限。可以打开文件,并查看其内容。
w:写权限。可以编辑,修改和删除文件。
x:执行权限。如果文件是脚本或者程序,则可以运行(执行)文件。
例如:
" ---"表示根本没有授予任何权限。
rwx表示已授予完全权限。读,写和执行指示符全部存在。
在我们的屏幕截图中,第一行以d开头。该行引用的目录名为archive。目录的所有者为dave,该目录所属组的名称也称为dave。
接下来的三个字符是该目录的用户权限。这些表明所有者拥有完全权限。 r,w和x字符都存在。这意味着用户dave具有该目录的读取,写入和执行权限。
第二组三个字符是组权限,即" r-x"。这些表明dave组的成员对该目录具有读取和执行权限。这意味着他们可以在目录中列出文件及其内容,并且可以" cd"(执行)到该目录。他们没有写权限,因此他们不能创建,编辑或者删除文件。
最后的三个字符集也是r-x。这些权限适用于不受前两组权限控制的人员。这些人(称为其他人)具有对该目录的读取和执行权限。
因此,总而言之,组成员和其他成员具有读取和执行权限。所有者(名为dave的用户)也具有写权限。
对于所有其他文件(除了mh.sh脚本文件),dave和dave组的成员对该文件具有读取和写入属性,而其他文件仅具有读取权限。
对于mh.sh脚本文件的特殊情况,所有者dave和组成员具有读取,写入和执行权限,而其他成员仅具有读取和执行权限。
了解权限语法
要使用chmod
设置权限,我们需要告诉它:
谁:如何设置权限。
什么:我们正在做出什么改变?我们要添加还是删除权限?
哪个:我们要设置哪个权限?
我们使用指示符来表示这些值,并形成简短的权限声明,例如" u + x",其中u表示用户(谁),+表示添加(what),而x表示执行权限(哪个)。
我们可以使用的值是:
u:用户,表示文件的所有者。
g:组,表示文件所属组的成员。
o:其他人,表示不受" u"和" g"权限控制的人。
a:全部,表示以上所有内容。
如果没有使用这些参数,则" chmod"的行为就好像已经使用了" a"一样。
我们可以使用的值是:
:减号。删除权限。
+:加号。授予权限。该权限将添加到现有权限中。如果要拥有此权限并且仅设置此权限,请使用" ="选项,如下所述。
=:等号。设置权限并删除其他权限。
我们可以使用的值是:
r:读取权限。
w:写入权限。
x:执行许可。
设置和修改权限
假设我们有一个文件,每个人都对此文件拥有完全权限。
ls -l new_ file.txt
我们希望用户dave具有读取和写入权限,而组和其他用户仅具有读取权限。我们可以使用以下命令:
chmod u=rw,og=r new_file.txt
使用=运算符意味着我们清除所有现有权限,然后设置指定的权限。
让我们检查一下该文件的新权限:
ls -l new_file.txt
正如我们期望的那样,现有权限已被删除,新的权限已被设置。
如何在不删除现有权限设置的情况下添加权限?我们也可以轻松做到这一点。
假设我们有一个完成编辑的脚本文件。我们需要使其对所有用户可执行。其当前权限如下所示:
ls -l new_script.sh
我们可以使用以下命令为每个人添加执行权限:
chmod a+x new_script.sh
如果我们查看权限,我们将看到执行权限现在已授予所有人,并且现有权限仍然存在。
ls -l new_script.sh
如果没有a + x语句中的a,我们可以完成相同的操作。以下命令也可以正常工作。
chmod +x new_script.sh
设置多个文件的权限
我们可以一次将权限应用于多个文件。
这些是当前目录中的文件:
ls -l
假设我们要从具有.page扩展名的文件中删除其他用户的写许可权。我们可以使用以下命令执行此操作:
chmod o-r *.page
让我们检查一下产生了什么影响:
ls -l
如我们所见,其他类别用户的.read文件已从.page文件中删除。没有其他文件受到影响。
如果我们想在子目录中包含文件,则可以使用-R
(递归)选项。
chmod -R o-r *.page
数字速记
使用chmod
的另一种方法是提供我们希望给予所有者,组和其他人的权限(三位数)。最左边的数字代表所有者的权限。中间数字代表组成员的权限。最右边的数字代表其他权限。
此处列出了我们可以使用的数字及其代表的含义:
0:(000)没有权限。
1:(001)执行权限。
2:(010)写入权限。
3:(011)写入和执行权限。
4:(100)读取权限。
5:(101)读取和执行权限。
6:(110)读写权限。
7:(111)读,写和执行权限。
这三个权限中的每一个都用与十进制数等效的二进制位之一表示。因此,二进制数为101的5表示读取并执行。 2(二进制010)表示具有写许可权。
使用此方法,我们可以设置所需的权限。我们不将这些权限添加到现有权限。因此,如果已经具有读写权限,则必须使用7(111)添加执行权限。使用1(001)将删除读取和写入权限,并添加执行权限。
让我们在.page文件中为其他类别的用户添加读取权限。我们还必须设置用户和组权限,因此我们需要将它们设置为已经存在的权限。这些用户已经具有读写权限,为6(110)。我们希望其他用户具有读取和权限,因此需要将其设置为4(100)。
以下命令将完成此操作:
chmod 664 *.page
这会将我们对用户,组成员和其他人所需的权限设置为我们所需的权限。用户和组成员的权限已重置为原来的权限,其他用户和成员的读取权限已恢复。
ls -l