linux命令 chmod_Linux chmod命令简介

linux命令 chmod

Linux系统上的每个对象都有一个权限模式,该权限模式描述了用户可以对其执行的操作。 权限分为三种:读( r ),写( w )和执行( x )。

读取文件就是查看其内容。 例如,文本文件必须具有读取权限,某人才能读取其中的文本。 如果用户要在该文件中添加句子,则需要权限。 执行权限使某人可以运行文件,例如Shell脚本或二进制程序文件。

基本权限

ls -l命令显示分配给文件的权限。 例如:


   
   
ls -l
-rw-rw-r-- 1 bruce bruce     0 Jul 30 16 : 25 schedule1.txt

某些权限( rw )多次出现,因为它们指的是不同的实体: usergroupother用户是所有者的同义词, 是用户的主要组,两者都是bruce其他是指所有其他用户。

第一个位置表示对象的类型: -表示文件, d表示目录, l表示符号链接。 接下来的9个位置分为三部分,并描述了许可模式。 位置按rwx排序, 用户groupother排序。

--- --- --- rwx rwx rwx
uuu ggg ooo u =用户,g =组,o =其他

档案

将显示一个为所有实体设置了读,写和执行位的文件:

 rwxrwxrwx  

当然,我们通常不会在现实世界中随意配置文件。 这只是如何使用每个位置的说明。

在以下示例中,文件被配置为其拥有者( pablo )具有读取和写入权限,该组的成员仅具有读取权限,而其他所有人则没有权限。

 -rw-r----- 1 pablo pablo    0 Jul 30 16 : 25 textfile 

chmod命令修改系统中对象的许可模式。 它是Linux安全命令集中最常用和重要的命令之一。

加号( + )符号添加权限,减号( - )符号删除权限。 您可以将chmod u + r读为“用户加读”,因为它授予了用户权限。 chmod ur命令的意思是“用户减去读取”,因为它使读取许可权脱离了用户。

目录

相同的三个权限也适用于目录。 目录必须具有读取权限,用户才能查看其内容。 用户需要添加到目录的权限(例如,创建新文件)。 用户要更改目录( cd ),必须具有执行权限。

 drw-rw-r-- 2 pablo pablo 4096 Jul 30 15 : 56 JBOSS 

巴勃罗可能是JBOSS目录的所有者,但是因为他没有执行权限,他不能cd到它。 他可以使用命令chmod u + x添加该权限,然后可以使用cd进入该权限。


   
   
$ cd JBOSS
bash: cd: JBOSS: Permission denied
$ chmod u+x JBOSS
$ ls -l
drwxrw-r-- 2 pablo pablo 4096 Jul 30 15 : 56 JBOSS
$ cd JBOSS
$ pwd
/ opt / JBOSS

综合论点

您可以使用逗号来组合参数。 在此示例中,您只需要一个命令来设置权限,这样该组就无法写入文件,世界其他地方也无法读取该文件:


   
   
$ chmod o-r,g-w readme.txt
$ ls -l
-rw-r----- 1 pablo share 0 Jul 31 13 : 34 readme.txt

您可以将其读为“其他减去读和分组减去写”。

假设Denise已经编写了一个名为home_backup.sh的Bash脚本,并希望授予其执行权限。 她还希望阻止其他任何人阅读,编写或执行它。 一种方法是使用加号和减号:

 $  chmod go-rw,u+x home_backup.sh 

另一种方法是使用等号( = )符号。 这将完全设置权限,而无需考虑先前的设置。 请注意,第二个等于之后有一个空格; 这表明值none

 $  chmod u =rwx, go = home_backup.sh 

您可以将其读为“用户相等的读,写和执行权限,以及组和其他不相等的权限”。

数值模式

Chmod还支持数字模式,该模式使用分配给每个位置的值:

所有者 其他
r w X [R w X [R w X
400 200 100 40 20 10 4 2 1个

可以计算一组权限的总值,并将其作为单个参数传递给chmod命令。 以Denise及其备份脚本为例。 如果她使用数字方式设置脚本权限,则必须首先计算合计值:

 -rwx------ 1 denise denise 0 Jul 31 13 : 53 home_backup.sh 

Denise会添加与她要申请的每个许可相对应的数字:

400 + 200 + 100 = 700

她的命令将是chmod 700 home_backup.sh 。 假设Denise想重置文件的原始权限:

 -rw-rw-r-- 1 denise denise 0 Jul 31 13 : 53 home_backup.sh 

这些权限的值计算为664:

400 + 200 + 40 + 20 + 4 = 664

Denise可以使用命令chmod 664 home_backup.sh还原原始权限。

特殊模式

可以在对象上设置其他三种模式:

名称 象征性的 数字
setuid s 4000
setgid s 2000
sticky Ť 1000

SetUID位对可执行文件强制执行用户所有权。 设置后,文件将以文件所有者的用户ID(而不是运行文件的用户)执行。

 $  chmod u+s 

SetGID位对文件和目录强制执行组所有权。 设置后,在目录中创建的任何文件或目录都将获得目录的组所有权,而不是用户的组所有权。 在文件上设置文件后,该文件将始终作为其所属组而不是用户执行:

 $  chmod g+s 

可以在目录上设置粘性位,也称为“受限制的删除标志”,以防止目录所有者以外的任何人删除该目录中的文件:

 $  chmod o+t 

可以通过将粘性位的值添加到其他权限的值上来设置该粘性位。 如果您有一个值为755的对象,并且想要设置粘性位,请添加1000:

1000 + 400 + 200 + 100 + 40 + 10 + 4 +1 = 1755

该命令将为chmod 1755 。 几种符号方法是等效的。 一个示例是chmod u = rwx,go = rx,o + t

附加功能

字母a是向所有用户分配权限的快捷方式。 chmod a + rwx命令等效于chmod ugo + rwx

递归的

像许多其他Linux命令一样,chmod具有一个递归参数-R ,它允许您递归操作目录及其内容。 递归的意思是该命令将尝试对指定目录下的所有对象进行操作,而不仅仅是目录本身。 本示例从一个空目录开始,并添加-v (详细)参数,因此chmod将报告其操作:


   
   
$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug   5 15 : 33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug   5 15 : 33 conf.xml
$ chmod -vR 700 conf
mode of 'conf' changed from 0775 ( rwxrwxr-x ) to 0700 ( rwx------ )
mode of 'conf/conf.xml' changed from 0664 ( rw-rw-r-- ) to 0700 ( rwx------ )

参考

参考文件命令( --reference = RFILE )可用于复制另一个文件( RFILE )的模式,称为参考文件。 当您要更改文件的模式以匹配特定配置时,或者您不知道确切的模式,或者不想花时间来计算它时,这非常方便:


   
   
$ ls -l
-rw-r--r-x 1 alan alan 0 Aug   5 17 : 10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug   5 17 : 10 readme.txt
$ chmod --reference =readme.txt notes.txt
$ ls -l
-rw-rw-r-- 1 alan alan 0 Aug   5 17 : 10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug   5 17 : 10 readme.txt

报告变更

-c (-- changes )参数,它告诉chmod仅在进行更改时报告(与-v-verbose相对 ,它告诉chmod报告其所有输出)。 Chmod仍会报告其他内容,例如是否允许执行某项操作。

参数-f (-- silent ,-- quiet )禁止显示大多数错误消息。 将此参数与-c一起使用将仅显示实际更改。

保留根

Linux文件系统的根( / )应该受到高度重视。 如果有人在此级别上犯了一个命令错误,则后果可能很糟糕,并使系统完全无用,尤其是当您运行将进行任何更改(或更糟糕的是:删除)的递归命令时。 幸运的是,chmod命令的--preserve-root参数将保护和保留根。 如果该参数与根目录上的递归chmod命令一起使用,则将不会发生任何事情,并且您将看到以下消息:


   
   
[ alan @ localhost ~ ] # chmod -cfR --preserve-root a+w /
chmod: it is dangerous to operate recursively on '/'
chmod: use --no-preserve-root to override this failsafe

不与递归一起使用时,该选项无效。 但是,如果root用户运行命令,则/的权限将更改,而其他文件或目录的权限则不会更改。


   
   
[ alan @ localhost ~ ] $ chmod -c --preserve-root a+ w /
chmod: changing permissions of '/' : Operation not permitted
[ root @ localhost / ] # chmod -c --preserve-root a+w /
mode of '/' changed from 0555 ( r-xr-xr-x ) to 0777 ( rwxrwxrwx )

令人惊讶的是,这不是默认参数。 --no-preserve-root是。 如果运行不带“ preserve”选项的命令,则该命令默认为“不保留”模式,并可能更改了不应更改的文件的权限。


   
   
[ alan @ localhost ~ ] $ chmod -cfR a+x /
mode of '/proc/1525/task/1525/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1541/task/1541/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1541/task/1580/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1541/task/1592/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1557/task/1557/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1558/task/1558/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )
mode of '/proc/1561/task/1561/comm' changed from 0644 ( rw-r--r-- ) to 0755 ( rwxr-xr-x )

结论

Linux系统上的所有对象都有一组权限。 重要的是偶尔检查和维护它们以防止不必要的访问。

翻译自: https://opensource.com/article/19/8/linux-chmod-command

linux命令 chmod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值