众所周知:chmod指令是用来改变文件权限的指令
那么我们先来讨论一下文件权限与chmod指令
我们通过$ls -l
就可以查看所有文件的情况
文件权限的设定方式有两种方式以及不同方式下chmod的使用方法
先举例一个文件权限字符哈,比如这种-rwxrwxrwx,其中三个为一组,三组分别代表所有者、群组、其他人所持有的权限程度
- 数字变更权限
数字变更权限即用数字来代表各个权限,那么各个权限对应的数字权重分别为
r:4 读
w:2 写
x:1 可执行
那么上面提到的三组分别持有的权限级别就是这三种权限的相加和的级别,针对上面样例来说三组的权限都为7,所以在这种情况下三组的权限级别是相同的。比如这种情况 -rwx rw- —,这种情况下所有者、群组、其他人分别持有的权限等级为7 6 0
$chmod [-R] xyz 文件或目录
// xyz:数字类型的权限属性,即rwx三种属性的数值相加和
// -R :递归的持续变更,即连同次目录下的所有文件都会变更
所以当你觉得某个文件或目录权限不够的时候可以适当的增加权限,比如给.bashrc增加全权限: $chmod 777 .bashrc
vim编辑处理过的文件通常权限为664
文件是可执行文件且不让人修改的文件权限是755
不希望别人看到这个文件的文件权限是740
- 符号变更权限
符号变更权限即用字母来指定各个身份具体有哪种的权限
u:所有者
g:群组
o:其他人
a:所有用户,所有身份的
+:加入
-:除去
=:设定
r:读
w:写
x:可执行
// /代表或的意思
$chmod u/g/o/a +/-/= r/w/x/ 文件或目录
比如-rwxr-xr-x:即对user拥有所有权限,group和other拥有可读可执行的权限
$chmod u=rwx,go=rx .bashrc
或者对所有的用户都增加可读权限
$chmod a+r .bashrc
!!注意一点:在使用+、-的时候记得要指定到具体的文件上 不然权限不变
权限的意义
文件:包括一般文本文件、数据库内容文件、二进制可执行文件等
- 权限对于文件的意义
r:read,可读取这一文件的实际内容,比如读取一个txt文本文件的内容
w:write,可编辑、新增、修改文件内容,!!!但是不包括删除该文件
x:eXecute,该文件具有可被系统执行的权限,windows中根据文件扩展名进行判断如windows中根据.exe、 .bat、 .com等来判断文件是否可被执行,在linux中文件是否能被执行和文件是否具有x权限有关,与扩展名无关哈 - 权限对于目录的意义
r:read contents in directory,即具有读取目录结构列表的权限,比如具有r权限就可以在用ls指令时该目录下的文件全被显示出来
w:modify contents of directory,当目录具有这个权限的时候,那就很牛了。因为当赋予了一个目录w权限,就表示你具有可以改变目录结构列表的权限了。
如
---->建立新的文件和目录
---->删除已存在的文件或目录(无论该文件的权限有多大)
---->将已存在的文件或目录进行更名
---->移动该目录内文件或目录的位置
x:access directory,目录的x代表用户能否进入到该目录成为工作目录。
啥?你不知道啥叫工作目录?
害你当前在哪个目录干活哪个就叫工作目录,你打开终端的时候系统就觉得你要在家目录里干点啥,所以你那时候的工作目录就是家目录,但是你cd指令变变变比如查看下载了点啥,就cd Downloads,然后你就进入到了Downloads目录下,那么这个时候这个目录就是工作目录。
这个时候我们要思考一个事了,如果有一天我的小弟乱懂想看我的日记目录下里面的日记,比如日记目录是xxx/xxxx/dairy,那么他只有该目录的r权限,那么他只能查看到我的日记目录下有?、???等文件,并不能切换到这个目录进行偷看哈哈哈
所以一定一定要区分你加的权限是加到文件上还是目录上!!!
比如这个例子,还是小弟想偷看我的日记,我并没有给它对我的日记文件增加任何权限,但是不小心放到了他的家目录下,,这个时候你可能觉得他又看不了没啥大事,但是危!!看不到日记内容的小弟已经气急败坏,然后一键delete,我。。。T T
所以一定一定要注意各个目录的权限和文件对应的权限哈
这里我还附上了一个《鸟叔linux私房菜》上的一个表格来展示内容,便于理解