改变文件或目录权限:chmod
命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod
执行权限:所有用户
语法:
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
(说明:ugoa分别表示:所有者、所属组、其他人、all所有)
(说明:+-=分别表示:增加权限、减少权限,设置为某个权限)
[mode=421 ] [文件或目录]
-R 递归修改
功能描述:改变文件或目录权限
补充说明:只有文件的所有者和root可以改变文件的权限。
示例:在/tmp 下创建一个story.list 并查看其权限:-rw-r--r--
![]()
现在,给所有者(u) 添加(+) 执行权限(x):

可以同时进行多个授权,用逗号分隔。例如:对所属组(g)添加(+)写入权限(w),同时对其他人(o)取消(-)读取权限(r):

我们可以不去考虑某个用户(ugoa)之前是什么权限,直接用等号给其赋予某个权限(r/w/x)。例如:对所属组(g)设置(=)读写执行权限(rwx):

权限的数字表示(用得较多)
r ---- 4
w ---- 2
x ---- 1
例如:rwxrw-r-- 对应的数字就是 764 ; 532 对应的权限就是 r-x-wx-w-
现在,假设将上面的文件权限设置为 rw-r----- (u读写,g可读,o无),对应的数字是 640。此时只需要 chmod 640 [文件名]即可。

接下来说一下 递归修改用到的 -R
在/tmp 目录下创建a目录,在a目录下创建b目录,查看两个目录的权限。

(上面涉及到的知识点回顾:mkdir -p 递归的创建目录;ll -d 查看目录或文件属性)
然后修改a目录权限为777(rwxrwxrwx),此时a中的子目录(b目录)权限是不变的:

此时,使用chmod -R 777 [目录名] 可以递归的更改该目录下的所有子目录和文件的权限:

扩展:root下创建新的用户
useradd bajie //创建一个叫做bajie 的用户
passwd bajie //设置bajie的密码(此处测试密码为123456)

接下来做一个测试:root用户在tmp 目录下 创建一个 temp 目录,然后再temp 目录下创建一个文件testfile,同时只给temp目录赋予777权限。

此时testfile 文件的权限是:rw-r--r-- ,那么刚才创建的普通用户bajie 能否删除这个文件呢?
![]()
用bajie登录,测试执行删除,同时查看root端:删除成功了!!

理解:删除一个文件的条件是:对这个文件所在的目录有“写权限”;对这个文件有“写权限”,是可以vim 编辑这个文件。
因此,这个testfile 所在的目录 temp 是有 777 权限的,所以,temp 目录下的所有文件都可以被删除!
【文件/目录 权限总结】


改变文件或目录的所有者:chown
命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
语法:
chown [用户] [文件或目录]
功能描述:改变文件或目录的所有者
范例:$ chown zhangsan test.txt(改变文件test.txt的所有者为zhangsan)
示例:普通用户bajie创建了一个文件 abcd 并赋权限为777,然后bajie修改该文件的所有者为root,失败!

原因是:只有root才可以更改文件的所有者!
接下来,试试用root登录,并执行同样 操作,此时就可以成功的修改该文件的所有者。

一般来讲,都是root创建一个文件,然后可以修改这个文件的所有者给某个用户。下面再演示一遍,root在/tmp 下创建一个文件1.txt,
然后创建一个用户lisi (useradd lisi),然后将1.txt这个文件 的所有者赋给lisi这个用户。
改变文件或目录的所属组:chgrp
命令名称:chgrp
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:
chgrp [用户组] [文件或目录]
功能描述:改变文件或目录的所属组
范例:
$ chgrp 1.txt zhangsan(改变文件1.txt的所属组为zhangsan)
扩展:创建一个用户组:groupadd [用户组名] (类似于创建用户 )
显示、设置文件的缺省权限:umask
命令名称:umask
命令英文原意:the user file-creation mask
命令所在路径:Shell内置命令
执行权限:所有用户
语法:
umask [-S]
-S 以rwx形式显示新建文件缺省权限
功能描述:显示、设置文件的缺省权限
范例: $ umask -S(查看当前创建目录或文件的默认(缺省)权限)

但是,创建一个文件,查看其缺省权限,却没有x
原因是:在Linux中新创建的任何文件都会把可执行权限(x)去掉(基于安全考虑)。
◇ 设置缺省权限
不加-S的情况下,会显示0022,第一个0暂时先不管。后面的022代表的是:777 - 022 = 755,也就是 rwxr-xr-x.
于是乎!要改变文件的缺省权限,只需要执行umask + 数字,数字 = 777 - 想要设置的权限数值。
比如,要设置为 rwxr-xr--,即754,所以就是 umask [777-754] = umask 023,试试:

然后,再新建一个目录,看看默认的权限,就变成了刚才设置的rwxr-xr--:

最后说明:虽然可以更改缺省权限,但并不建议更改,保留默认的755(rwxr-xr-x)。
【2014年10月25日】
1223

被折叠的 条评论
为什么被折叠?



