如何更改Linux的权限
在Linux和Unix上,安全性从文件权限开始。
在一个非常基本的级别,文件和目录权限在系统的安全性中发挥着重要作用。
在Linux系统上创建文件或者目录时,它会附带默认权限。
文件权限适用于三个级别:"所有者","""成员"和"其他"。
Chmod命令用于Linux以更改这些权限。
在本教程中,我们将讨论如何使用chmod命令更改Linux中的文件权限。
1)使用数字(八进制)方法更改权限
可以使用某些操作符( - ,+或者=)将权限(r,w或者x)分配给特定用户(u,g,o或者a)来使用chmod命令更改权限(访问模式)。
该命令接受数值(八进制)或者符号访问模式规范。
数值方法是设置文件和目录的权限最常用的方法。
为此,请输入chmod numeric_permission filename
。
每个权限由数字表示,并且特定实体的许可最终由一组三列表示。
在上图中,
给出"用户"(4 2 1)用户已读取,写入和执行的权限。
"组"给出(4 2 0)权限,其中组成员可以读写。
"其他(世界)"给出(4 0 0)许可,其中其他人只能读取。
在数字方法中,所有权限都是一次更改。
例如,
755
:设置读取+ write +执行"用户",SET READ + EXECUTE权限的执行权限(SET READ + EACTERSEN + ECONTERECASIONS的"其他"。
# chmod 755 asciiquarium.tar.gz
# ls -l asciiquarium.tar.gz -rwxr-xr-x 1 linoadmin linoadmin 15436 Mar 9 2013 asciiquarium.tar.gz
476
# chmod 476 bootstrap
# ls -l bootstrap -r--rwxrw- 1 root root 5747 Apr 25 01:45 bootstrap
500
:设置读取+向"用户"执行权限,设置为"组",并为"其他"设置无权限设置。
# chmod 500 asciiquarium_1.1/
# ls -ld asciiquarium_1.1/ dr-x------ 2 linoadmin linoadmin 4096 Mar 9 2013 asciiquarium_1.1/
使用数字方法时,应始终指定三个值(所有者,组和其他)。
2)使用符号模式更改权限
大多数Linux用户更优选数值访问模式。
但是,有些人愿意使用符号形式,因为它们通常会修改现有模式而不是完全替换它。
符号模式用作chmod实体= permissions filename
。
符号模式规范有三个部分,由个别字符组成并使用字母来识别零件:
- "实体":用户所有者= U,群体所有者= G,其他= o,all = a
- "操作":+要添加, - 删除,或者=分配(删除其他现有权限)
- 设置到设置的权限:r =读取,w = write,x =执行
一些例子让你理解。
chmod + x
:添加所有实体用户,组和其他的执行权限。
它用于制作脚本或者程序可执行以便运行它
# chmod +x hello.sh
# ls -l hello.sh -rwxr-xr-x 1 root root 66 Jan 15 20:12 hello
现在,我们可以如下运行脚本
# ./hello Hello... How are you ?
"u + x":仅添加用户的执行权限
# chmod u+x backupdb.sh
# ls -l backupdb.sh -rwxr--r-- 1 linoadmin linoadmin 15436 Mar 9 2013 backupdb.sh
go-w
:仅从组和其他类中删除写入权限。
# chmod go-w script-test/
# ls -ld script-test/ drwxr-xr-x 3 root root 4096 Apr 25 02:21 script-test/
a = rw
:设置读写,但不执行,每个人的权限。
# chmod a=rw bootstrap
# ls -l bootstrap -rw-rw-rw- 1 root root 5747 Apr 25 01:45 bootstrap
g-x,o-rx
:删除group
和删除读取+的执行权限的执行权限。
注意:不要在逗号后使用空间(,)
# chmod g-x,o-rx baba/
让我们使用ls命令验证权限:
# ls -ld baba/ drwxr----- 2 root root 4096 Apr 13 01:35 baba/
当我们使用符号方法时,可以执行组合以同时操纵某些实体。
请记住,使用符号模式时,在执行CHMOD命令之前,我们未指定静止的权限
3)递归更改权限
当我们在没有任何选项的目录上使用chmod命令时,它不会影响其子目录的权限。
这意味着权限仅应用于目录本身。
要使用子目录(递归)更改目录的权限(递归),我们可以使用"-r""选项。
例如,查看我们应用的"ASCIIQUARIUM_1.1"目录,我们应用了500个权限。
当我们列出"asciiquarium_1.1"目录中的文件和目录的权限时,我们可以设置为"500"。
# ls -l asciiquarium_1.1/ total 60 -rw-rw-r-- 1 linoadmin linoadmin 27679 Mar 9 2013 asciiquarium -rw-rw-r-- 1 linoadmin linoadmin 228 Mar 9 2013 CHANGES -rw-rw-r-- 1 linoadmin linoadmin 18092 Mar 9 2013 gpl.txt -rw-rw-r-- 1 linoadmin linoadmin 45 Mar 9 2013 MANIFEST -rw-rw-r-- 1 linoadmin linoadmin 1060 Mar 9 2013 README
现在让我们使用以下命令使用"asciiquarium_1.1"目录相同的权限使用"chmod -r`命令:
# chmod -R 500 asciiquarium_1.1/
现在让我们验证文件和目录权限,如下所示:
# ls -l asciiquarium_1.1/ total 60 -r-x------ 1 linoadmin linoadmin 27679 Mar 9 2013 asciiquarium -r-x------ 1 linoadmin linoadmin 228 Mar 9 2013 CHANGES -r-x------ 1 linoadmin linoadmin 18092 Mar 9 2013 gpl.txt -r-x------ 1 linoadmin linoadmin 45 Mar 9 2013 MANIFEST -r-x------ 1 linoadmin linoadmin 1060 Mar 9 2013 README
我们可以看到权限已在文件和子目录上设置。
4)特殊比特权限
我们将使用权限完成的大多数任务将是读取,写入和执行权限。
但是,还有几种其他特殊权限可以分配给文件系统中的文件和目录。
这些特殊权限被称为添加到文件或者目录模式的开头的另外数字。
以下特殊位可用于Linux文件系统使用:
- Suid:Set用户ID权限允许用户运行程序,就像它们是程序的用户所有者一样;在大多数情况下,用户所有者是root用户。此权限集的数值是4xxx(其中"XXX"由先前提到的三组的数值替换为)。
- SGID:设置在目录上时,SET组ID权限会自动为目录中创建的所有新文件的组所有权提供给目录的组所有者(Numeric = 2xxx)。设置在文件上时,SGID允许用户运行程序,就像它们是文件的组所有者一样。
- 粘性位:此权限集用于将"非团"保存从公共目录中的文件(Numeric = 1xxx)中的文件。在粘滞位目录中,只有文件的所有者或者目录的所有者可以删除文件(root始终可以删除文件)。
要理解让我给你一个例子:
我们将使用以下命令在文件上应用SUID权限:
# chmod 4755 bootstrap
# ls -l bootstrap -rwsr-xr-x 1 root root 5747 Apr 25 01:45 bootstrap