Linux文件权限的设置

Linux文件权限

一、文件权限

1.1 文件权限的前提用户及用户组

想要学习文件权限第一步在于了解文件系统的权限设置,而提到权限就不得不先说说用户的概念。一个文件的控制权限分为三种用户、用户组、其他人。

1.文件的拥有者

文件的拥有者往往是创建文件的那个人,例如用户boker使用

[boker@study ~] # touch test

创建的文件test该文件的拥有者就是boker,在Linux系统中几乎所有方式创建的文件其拥有者都是创建者本身。有一个例外就是在创建链接时。具体内容我们在后续章节会细说,这里先按下不表。

2.用户组的概念

当用户boker创建了一个文件时,该文件同时会被加入boker所在的第一用户组。在大部分情况下,根据我们的权限设置,组内用户可以共同读取这些文件,使得文件可以共享。而用户组的概念就是为了共享而产生的,将一些文件放在组内就可以有效地协同工作了。

3.其他人的概念

我们假设boker用户所在的组就叫做boker,此时有一个名为poker的用户想要访问test,而test属于boker组,那么请问poker可以成功访问吗?
对于这个问题的答案十分简单我们只需知道文件对于其他人的权限设定即可,这里我们抛出一个概念即一个文件的权限设定可以用一张图来描述。

我们可以发现在圆环内部的成员有boker、amine两人他们之间可以共享文件。而poker是其他人具有其他人的权限。
除了正常用户以外这个系统中还存在一个拥有所有权限的账户root。root是Linux系统的管理员可以访问一切文件,控制整个计算机的运行。对于该用户的操作我一定要十分小心。

1.2 Linux文件权限

1.2.1 文件属性

我们可以使用命令【ls】来查看文件的属性。

[root@boker ~]# ls -al
total 40
dr-xr-x---.  6 root root  255 Apr  7 22:13 .
dr-xr-xr-x. 17 root root  224 Mar 28 23:01 ..
-rw-------.  1 root root 2539 Mar 28 23:02 anaconda-ks.cfg
-rw-------.  1 root root 1014 Apr  7 22:04 .bash_history
-rw-r--r--.  1 root root   18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 28  2013 .bashrc
drwx------.  4 root root   31 Mar 29 02:40 .cache
drwx------.  4 root root   30 Mar 29 02:40 .config
-rw-r--r--.  1 root root  100 Dec 28  2013 .cshrc
drwx------.  3 root root   25 Mar 28 23:12 .dbus
-rw-r--r--.  1 root root 2570 Mar 28 23:13 initial-setup-ks.cfg
drwxr-xr-x.  3 root root   19 Mar 29 02:40 .local
-rw-r--r--.  1 root root  129 Dec 28  2013 .tcshrc
-rw-------.  1 root root 1117 Apr  1 23:35 .viminfo
-rw-------.  1 root root  114 Apr  7 22:13 .xauthfEDY3D

这个【ls -l】命令可以替换成【ll】,两者效果相同。

我们可以看到这个命令列出了文件的详细属性,下图列出了每行数据表示的意思。

这里我们主要说一下第一列的具体含义:可以看第15行,文件属性[drwxr-xr-x]这是一个最普通的文件权限设置,第一个字母d表示文件类型,d是目录、-是文件、|是链接文件、b设备文件、c串口设备等。随后三个一组的rwx分别表示文件的r读、w写、x执行。-表示没有该权限。第一组为文件拥有者权限,第二组为所在组权限,第三组为其他人权限。
例如[drwxr-xr-x]含义就可以理解为,目录文件;拥有者具有读写执行的权限;组拥有读执行的权限;其他人拥有读执行的权限。

此处要注意一个问题当一个文件为目录时,必须具有执行权限才可以进入该目录,即目录的执行权限表示的含义为进入该目录。而r读权限仅仅用作当你使用ls读取列表时能否读到该目录。

  • 此外还要注意当一个文件的权限被设置为[----------],并非表示该文件不可被任何人读取,记得我们之前提到的root用户,它基本上不受任何系统限制约束,因此设置为[---------]的目录就是默认只有root可以访问。

1.2.2 修改文件属性

常用文件权限修改的命令有三个

chgrp   #修改文件所属用户组
chown   #修改文件拥有者
chmod   #修改文件的权限

我们细分来讲先说说【chgrp】这个命令应该很好记其英文含义为change group修改组。

chgrp [-R] dirname/filename ...
选项与参数:
-R 即递归修改,连同目录下所有文件、目录都更新成为这个用户组。

此处我们想要使用这条命令必须知道正确的用户组名称。

[root@boker ~]# chgrp users initial-setup-ks.cfg 
[root@boker ~]# ls -l
total 8
-rw-------. 1 root root  2539 Mar 28 23:02 anaconda-ks.cfg
-rw-r--r--. 1 root users 2570 Mar 28 23:13 initial-setup-ks.cfg
[root@boker ~]# chgrp testing initial-setup-ks.cfg 
chgrp: invalid group: ‘testing’

修改该文件的拥有者命令【chown】这条命令的英文含义相信读者可以自己判断出来。这条命令很有意思既然修改修改用户那么就很有可能连同用户组一起修改,所以这条命令存在两种方式一是修改用户、二是连同用户组一起修改。

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
选项与参数:
-R: 递归修改,基本意思同上chgrp。

接下来我们试着修改文件的拥有者

[root@boker ~]# chown boker initial-setup-ks.cfg 
[root@boker ~]# ls -l
total 8
-rw-------. 1 root  root  2539 Mar 28 23:02 anaconda-ks.cfg
-rw-r--r--. 1 boker users 2570 Mar 28 23:13 initial-setup-ks.cfg
[root@boker ~]# chown root:root initial-setup-ks.cfg 
[root@boker ~]# ls -l
total 8
-rw-------. 1 root root 2539 Mar 28 23:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 2570 Mar 28 23:13 initial-setup-ks.cfg

第三条命令修改权限【chmod】这条命令可以有两种方式修改权限一是数组的方法二是符号修改。接下来我们分开说明这两中方法。

  • 数字类型修改文件权限

Linux文件权限本身具有9个,即拥有者、组、其他人三种身份各自拥有读、写、执行的权限。这三种权限的数字对照表如下

| r | 4 |
|---------|
| w | 2 |
| x| 1 |

每种身份的权限是累加的例如当设置拥有者权限为读写执行时那么应该设置的数字为7,组权限为读执行设置5,其他人没有权限设置0。则该文件权限设置命令就是:

chome 750 filename
  • 符号类型修改文件权限

我们先来看看都有哪些设置方法

命令 身份 方法 权限 对象
chmod u g o a + - = r w x 文件或目录

其中对象里u就表示拥有者user,g表示组group,o表示其他人other。a表示所有人。
方法中+表示添加权限,-表示去除权限,=表示将权限变为相应设置。具体例子大家可以查阅其他资料来学习,这里不是金=今天的重点也不是权限设置方法的重点。

1.2.3 权限的意义

对于目录和文件他们的读写执行权限有什么区别?以及我们进行一些操作时分别需要那些权限我们在这里做一个梳理。
首先对于文件和目录他们本身存储的内容大有不同,如文件实际存储的内容是数据。而目录存储的内容是目录列表。

  • 我们来讨论r这个权限:对于文件r权限限制的是能否读取文件内容,无论是否有r权限都可以使用【ls】读取文件名。而目录如果没有r权限就无法读取目录名。但不影响他的访问。

  • 对w权限:文件表示能否修改文件内容,而目录则表示能否修改目录中的文件名。

  • 对于x权限:文件表示能否执行文件,而目录则是能否进入该目录。也就是说一个目录即使没有r权限也可以进入,只要你知道文件名。一个文件本身是否可执行并不代表文件具有执行权限,而是通过x设置了他的执行权限。
    知道上述内容后我们就可以理解运行某些文件的最小权限设置了。

参考书籍:《鸟哥的Linux私房菜》

posted @ 2022-04-08 17:54  默默Coding  阅读(2300)  评论(0)    收藏  举报