Linux 文件权限管理

1.查看文件权限

ls 命令除了用它来列出并显示当前目录下的文件,还可以用它来查看文件权限。

我们加上 -l 参数,来使用较长格式列出文件:

$ ls -l
Linux 文件权限管理_第1张图片

各部分的含义是什么呢?

以:drwxr-xr-x 2 diego diego 4096 3月 14 06:56 公共的 为例:

Linux 文件权限管理_第2张图片
字段 说明
drwxr-xr-x 文件类型和权限
2 链接数
diego(第一个) 所有者
diego(第二个) 所属用户组
4096 文件大小
3月 14 06:56 最后修改时间
公共的 文件名

那么 drwxr-xr-x 又是表示什么呢?

Linux 文件权限管理_第3张图片
  • 第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 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 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 命令 能将指定文件的所有者改为指定的用户或组。

结果:

Linux 文件权限管理_第4张图片

可见文件的所有者已经变成 diego。




3.修改文件权限

如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:

方式一:二进制数字表示

Linux 文件权限管理_第5张图片

可以看出,一个权限组合能用数字表示:
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 属性。

你可能感兴趣的:(Linux 文件权限管理)