改变文件属性和权限
一个文件有其属性和权限, 这对于文件的安全尤为重要。 但是有时我们会发生这样的事, 比如说:我们以普通用户登录,但是我们想查看/root
目录下的文件, 我们会发现执行ls /root
命令会显示ls: 无法打开目录'/root': 权限不够
的字样。返回的信息也说了我们为何打不开/root
目录, 是因为权限不够。
上面那个只是拿/root
目录实验, 在实际情况中, /root
目录一般是不会让普通目录访问的。我们还可能会遇到权限的其他问题, 那么有那些命令可以更改文件的权限呢?
这就是我们接下来要学习的更改权限的命令:chgrp
, chown
, chmod
chown
我们知道Linux中有用户和用户组的概念, 即一个文件属于某一用户, 这个用户又属于某个用户组。因此Linux提供了两种命令分别改变文件所有者和用户组用户的权限。chown
改变文件的所有者,chgrp
改变文件的所属用户组。还有一个命令chmod
改变文件的权限。我们先来介绍改变文件的所有者命令chown
。
chown
是change owner
的缩写形式,用于改变文件所有者。我们可以使用如下的方式:
chown [-R] 用户名 文件或目录
将demo.txt
文件的所有者更改为helloyong
chown helloyong demo.txt //改变demo.txt文件所有者为helloyong
如果你想更改的是一个目录, 且你想让目录下所有的文件权限也随之改变, 那么可以在chown
下添加参数-R
chown -R helloyong /demo //改变目录/demo及其子文件的所有者为helloyong
-R
的参数表示为递归持续更改, 即连同下面的子目录及文件
我们可以使用这个命令同时改变文件的用户组, 只需在用户和用户组之间加上冒号:
即可, 如用户:用户组
chown helloyong:root demo.txt //改变demo.txt的所有者为helloyong, 用户组为root
:
也可以换成点.
, 但是一般建议为冒号:
也可以只改变用户组:
chown demo.txt :root //改变demo.txt的用户组为root, 只要不写用户即可
改完后, 可以使用ls -l 文件名
的方式查看权限的变化.如:
ls -l demo.txt
chgrp
既然chown
命令是change owner
, 那么chgrp
命令就是change group
, 即改变用户组.用法为:
chgrp [-R] 用户组 文件名
[-R]
的作用和上面一样.
我们更改demo.txt
的所属用户组
chgrp root demo.txt //更改demo.txt的用户组为root用户组
chmod
这个命令更改文件的权限, 我们知道权限有三种, 文件所有者权限, 用户组权限, 其他用户权限. 每种权限分别有r
, w
, x
(对应为读, 写, 执行)的权限. 在Linux中的文件一文提到, 这三个参数可以用数字代替. r
对应4
, w
对应2
, x
对应1
.
每中权限累加为一个数字, 三种权限就有三个数字.
chmod [-R] xyz 文件或目录 //x,y,z分别表示所有者, 用户组, 其他用户的权限
我们砸一次拿demo.txt举例:
chmod 745 demo.txt //7=4+2+1, 4=4, 5=4+1
文件所有者权限为7
, 即4+2+1
, 我们可以退出所有者权限为rwx
用户组权限为4
, 即其有权限为r, r--
其他用户权限为5
, 那么权限为r-x
我们还有一种形式设置文件权限.
chmod u=rwx,g+x,o-wx demo.txt //对demo.txt设置权限
上面的例子中, 设置了用户(u
)的权限为rwx
, 用户组(g
)的权限增加x
权限, 除去其他用户(o
)的wx
权限. 上面个的形式可以用下面的表格来代替.
命令 | 对象 | 动作 | 权限 | 目标 |
---|---|---|---|---|
chmod | u , g , o , a |
+ , - , = |
r , w , x |
文件或目录 |
u
: user
, 表示文件所有者权限
g
: group
, 表示用户组权限
o
: other
, 表示其他用户权限
a
: all
, 表示以上所有的权限
+
: 增加权限
-
: 减少权限
=
: 设置权限
例如:
//对于demo.txt, 文件所有者增加执行权限x, 设置用户组的权限为rw
chmod u+x, g=rw demo.txt
//对所有用户增加执行权限
chmod a+x demo.txt