1.查看文件权限
ls 命令除了用它来列出并显示当前目录下的文件,还可以用它来查看文件权限。
我们加上 -l 参数,来使用较长格式列出文件:
$ ls -l
各部分的含义是什么呢?
以:drwxr-xr-x 2 diego diego 4096 3月 14 06:56 公共的
为例:
字段 | 说明 |
---|---|
drwxr-xr-x | 文件类型和权限 |
2 | 链接数 |
diego(第一个) | 所有者 |
diego(第二个) | 所属用户组 |
4096 | 文件大小 |
3月 14 06:56 | 最后修改时间 |
公共的 | 文件名 |
那么 drwxr-xr-x
又是表示什么呢?
第1位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道等(本例中是:d)
第2-4位表示这个文件的所有者拥有的权限,r是读,w是写,x是执行(本例中是:rwx)
第5-7位表示和这个文件所有者所在同一个用户组的用户所具有的权限。(本例中是:r-x,- 表示没有该权限,只有r和x权限)
第8-10位表示其他用户所具有的权限(本例中是:r-x)
下面讲解各字段具体含义:
- 文件类型
关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。还有 socket(网络套接字), pipe (管道)和软链接文件(软链接等同于 Windows 上的快捷方式)
- 文件权限
读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 'exe' 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。
你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息
所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限。
- 链接数
链接到该文件所在的 inode 结点的文件名数目。
- 文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
2.变更文件所有者
假设目前是 lilei 用户登录,新建一个文件,命名为 “iphone6”:
$ touch iphone6
用 ll 命令查看该文件:
lilei@diego-ThinkPad-T540p:~$ ll iphone6
-rw-rw-r-- 1 lilei lilei 0 3月 16 21:23 iphone6
可见该文件所有者是 lilei 。
现在,换回到 diego 用户身份,使用以下命令变更文件所有者为 diego :
$ cd /home/lilei
$ ls iphone6
$ sudo chown diego iphone6
$ cp iphone6 /home/diego
chown 命令 能将指定文件的所有者改为指定的用户或组。
结果:
可见文件的所有者已经变成 diego。
3.修改文件权限
如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:
方式一:二进制数字表示
可以看出,一个权限组合能用数字表示:
r=4,w=2,x=1
例如要 rwx 则4+2+1=7;
例如要 rw- 则4+2=6;
例如要 r-x 则4+1=5。
那么每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)也就可以用三个数字来表示。
现在我们修改一下文件等权限:
$ chmod 700 iphone6
然后查看该文件权限:
diego@diego-ThinkPad-T540p:/home/lilei$ chmod 700 iphone6
diego@diego-ThinkPad-T540p:/home/lilei$ ll iphone6
-rwx------ 1 diego lilei 0 3月 16 21:23 iphone6*
可见,所属用户组和其他用户都不拥有该文件等 rwx 权限了。
方式二:加减赋值操作
现在我们要去除文件的所属用户组,其他用户的读写权限,可以这样操作:
$ chmod go-rw iphone6
第一个参数(本例是:go)指定对哪类用户进行操作,如下所述:
字段 | 说明 |
---|---|
u | 文件拥有者 |
g | 所属用户组 |
o | 其他用户 |
a | 所有用户,相当于 ugo 的效果。 |
第二个参数(本例是:- )指授予或去除权限:
字段 | 说明 |
---|---|
+ | 获得指定的权限 |
- | 去除指定的权限 |
= | 清除选定的许可权字段并将其设置为指定的许可权。 如果不指定 = 之后的许可权,chmod 命令从选定的 字段除去所有许可权。 |
第三个参数(本例是:rw)指要授予或去除的权限种类:
字段 | 说明 |
---|---|
r | 读权限 |
w | 写权限 |
x | 执行权限 |
X | 如果当前的(未修改的)方式位设置了至少一个用户、组或其它 执行位,则执行文件的许可权。如果指定了 File 参数并且在当前 的方式位中未设置任何执行位,则忽略 X 标志。 |
s | 如果指定或隐含 u 标志,则设置执行时的用户标识许可权。 如果指定或隐含 g 标志,则设置执行时的组标识许可权。 |
t | 对于目录,它表示只有文件所有者可以链接或取消链接 指定目录中的文件。对于文件,它设置 save-text 属性。 |