Linux更改文件及目录权限

本文介绍的是Linux文件及目录权限的相关概念、对文件和目录权限进行修改的相关操作!

一、权限涉及的概念

权限的操作主要涉及以下几个概念:

  • 角色
    角色包括所属用户(即所有者)、所属群组、其他人。通常用user(u)、group(g)、others(o)来表示前面的三种角色。

  • 权限
    权限包括读、写、执行三种权限。通常用read(r)、write(w)、execute(x)来表示前面的三种权限,这三种权限针对不同的操作对象(文件、目录)又有不同的含义。

  • 操作对象
    操作对象包括文件、目录两种。

下面对权限的操作就是针对上面几个概念进行的!

既然这里的重点是“权限”,那我们来看一下文件及目录的权限,在我的机器上有这样几个文件和目录:

[admin@centos-ss iwwenbo]$ pwd
/usr/share/nginx/html/iwwenbo
[admin@centos-ss iwwenbo]$ ll
total 24
-rw-r--r-- 1 admin www 15086 Jun 26  2016 favicon.ico
-rw-r--r-- 1 admin www   432 Aug  5  2016 index.php
drwxr-xr-x 3 admin www  4096 Aug 18 03:33 sites

我使用的是iwwenbo这个用户进行登陆的,当前目录是/usr/share/nginx/html/iwwenbo,使用ll查看当前目录的文件,可以发现包含的信息有:

从上图可以看出,包含的信息包括7部分:

[1] 代表这个文件的类型与权限(permission);

[2] 表示有多少档名连结到此节点(i-node);

[3] 表示这个文件(或目录)的拥有者账号;

[4] 表示这个文件的所属群组;

[5] 表示这个文件的容量大小,默认单位为bytes;

[6] 表示这个文件的建档日期或者是最近的修改日期;

[7] 表示这个文件的档名;

二、更改角色

权限离不开角色,更改角色和权限的命令有:

  • chgrp :改变文件所属群组(change group);
  • chown :改变文件拥有者(change owner);

具体命令格式为:

#-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

chgrp [-R] group_name dirname/filename
#-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

chown [-R] 用户账号名称 文件或目录
#chown在更改所属用户时也可以将所属群组一起修改,具体语法

chown [-R] 账号名称:组名 文件或目录

补充:

chown也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数点『.』也行! 不过很多朋友设定账号时,喜欢在账号当中加入小数点(例如vbird.tsai这样的账号格式),这就会造成系统的误判了! 所以我们比较建议使用冒号『:』来隔开拥有者与群组啦!此外,chown也能单纯的修改所属群组呢! 例如『chown .sshd install.log』就是修改群组~看到了吗?就是那个小数点的用途!

三、权限对于文件和目录作用的区别:

对于文件

文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (execute):该文件具有可以被系统执行的权限。

对于目录

目录主要的内容在记录文件名列表,文件名与目录有强烈的关连啦! 所以如果是针对目录时,那个 r, w, x 对目录是什么意义呢?

  • r (read contents in directory):

表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!

  • w (modify contents of directory):

这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:

  1. 建立新的文件与目录;
  2. 删除已经存在的文件与目录(不论该文件的权限为何!)
  3. 将已存在的文件或目录进行更名;
  4. 搬移该目录内的文件、目录位置。

总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!

  • x (access directory):

咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!

四、更改权限

更改权限操作离不开角色,权限更改的实际意义在于,更改对应角色对指定文件或目录的作用权限。使用chmod命令设定权限时有两种方式:通过数字或通过符号来进行权限的变更!

一个文件的权限字符大概如下:

-rwxrwxrwx

除了第一个字符表示的是文件类型外,其他9个字符则表示的是权限,每3个一组,代表了3个角色的权限信息。

使用数字进行权限变更

权限的数字表示为:

r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0

使用数字进行权限设定的命令如下:

#xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
#-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
chmod [-R] xyz 文件或目录

使用符号进行权限变更

我们可以由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

来实作一下吧!假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:

  • user (u):具有可读、可写、可执行的权限;
  • group 与 others (g/o):具有可读与执行的权限。

所以就是:

[root@www ~]# chmod  u=rwx,go=rx  .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格!
[root@www ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

更多详情参见『鸟哥的Linux私房菜』。

赞(0)
未经允许禁止转载:优米格 » Linux更改文件及目录权限

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系