linux是多人操作系统,有时候不同的用户创建的文件具有不同的权限。一般来说那个用户创建的文件,自然就是文件的所有者,而其他用户如果对其操作需要对其设置权限。
在遇见权限的时候,有时候会在网上见到chmod 777 。其数字有什么什么鬼,下面依次讲一下。
现象创建一个文件,然后看起文件的详细信息。
# 查看文件的详情
ll
具体代表的意义(先看具体意义,后面对重要的权限进行详细解释):
字段 | 意义 |
---|---|
lrwxrwxrwx(十个字符) | 代表文档类型以及不同用户的权限 |
1 | 代表此文档的硬链接的个数或者子目录数(有时候空文件夹会显示2,使用ls -a 可以看出其有. …) |
root(第一个) | 用户 |
root(第二个,前面说过如果不定义所在组会创建一个和用户名一样组) | 用户组 |
7 | 文件的大小(字节) |
8月24 03:13 | 最后修改的日期 |
bin->/usr/bin | 如果是文档会显示文档名(文件或文件夹),而这个是一个硬链接所以这样显示 |
其实对于这个ll详情代表的具体意义,目前了解即可,而对于权限其实我们主要就是对前面文件属性的字段操作。
截图中先看前面一串代表的意思
文件类型,在前面的一篇中写过,而这个l 代表的就是一个链接,具体各字母代表什么意思,可以看一下linux基础之文件和文件夹的常见操作命令
而后面的九个字母,其实可以分三组。每一组可以分r,w,x三个权限的授权。
- 第一组: 也就是代表所有者的权限。所有者可以默认拥有rwx三个权限,当然也可以设置权限的修改。
- 第二组:代表用户所在组的权限,如果赋予了某些权限那么其所在组的用户都有了这个权限。
- 第三组:其他用户组,简单的说就是除了用户以及用户所在的用户组以外的所有用户的权限。
其中对于权限操作的行为,主要是用r,w,x三种行为的赋权。虽然三种的赋权,但是其对象又分文件夹和文件,下面看一下其具体对两者的作用。
- r (read)
- 文件夹:可以读取,文件夹内部目录的读取,使用ls可以查看目录内容。
- 文件:代表可以读取和查看文件内容。
- w(write)
- 文件夹:可以修改,对目录内创建,删除和重命名文件名字。
- 文件:可以修改文件内容,但是不代表可以删除该文件,删除一个文件的前提是对文件所在的目录有读写权限,才能删除该文件。
- x(execute):
- 文件夹:代表可以进入该目录
- 文件:代表可以执行该文件
而对于文件权限的管理,主要是使用chown 以及chmod命令,对用户以及用户组的权限增加,删除,修改。
chmod
还是老规矩,先看一下具体有哪些常用的参数。
参数 | 作用 |
---|---|
u | 文件所有者 |
g | 文件所有者所在的组 |
o | 所有其他的用户 |
a | 所有用户 |
# 将test 的 test.txt文件赋予其所在组,以及其他组r的权限
chmod go=r test.txt
#将test 的 test.txt文件赋予其所在组,以及其他组再增加w的权限
第一种:chmod go=rw test.txt
第二种g:chmod og+w test.txt(因为在第一次操作到时候,已经赋予了其r的权限)
可以看出其符号不同代表的意义不一样
符号 | 左右 |
---|---|
+ | 为指定的用户增加权限 |
- | 取出指定用户的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置(这个上面测试题中明明第一步设置了r权限,再次增加w权限的时候需要写:rw) |
这个时候就有了前面的一个权力数字777是什么意思呢?
再前面图中我们可以看出代表权限 :
r | w | x |
---|---|---|
1或0 | 1或0 | 1或0 |
单个的权限用1或0表示,如果是1那就是拥有,如果是0那就是没有。而这个就有一个疑问,难道不会由一个数字代表两种不同的权限吗?
不会,虽然是1和0组成,但是其所在的位不同所以就其中代表1和O用二进制表示得到的十进制数字是各自不同的,
数字 | 权限 | 代表的rwx | 二进制 |
---|---|---|---|
7 | 读写执行 | rwx | 111 |
6 | 读写 | rw- | 110 |
5 | 读执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无任何权限 | — | 000 |
# 将test 的 test.txt文件赋予其所在组,以及其他组r的权限
第一种:chmod go=r test.txt
第二种:chmod go=4 test.txt
chown
文件除了可以修改其权限以外,还有一个需求就需要修改其所有者,也就是chown命令。
chown 新拥有者 文件或目录
chown 新拥有者**:**新用户组 文件或目录
而且新用户或者组可以是用户名或者用户ID
chown 需要超级用户 root 的权限才能执行此命令。 只有超级用户和属于组的文件所有者才能变更文件关联组
参数 | 作用 |
---|---|
-c | 显示更改的部分的信息 |
-f | 忽略错误的信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件,也就是递归 |
# 修改test 用户的test.txt 文件所有者位test1
chown test1 test.txt
#修改test 用户的test.txt 文件所有者位test1,以及test1group
chown test1:test1group test.txt
#修改test 用户的test.txt 文件所有者组test1group
chown :test1group test.txt
补充
与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
# 修改test用户的test.txt之前的所在的用户组test1组改到test2组中
chgrp test2 test.txt