一、Linux权限介绍
在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
可以通过以下三种方式限制方位权限:
- 只用户自己访问:
- 允许一个预先指定的用户组中的用户访问
- 允许系统中的任何用户访问
同时,用户能够控制一个文件或目录的访问程度,一个文件或目录可能有读、写以及执行权限;当创建一个文件时,系统会自动赋予文件的所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。
每一个用户都有它自身的读、写和执行权限。
- 第一套权限控制访问自己的文件权限,即所有者权限。
- 第二套权限控制用户组访问其中一个用户的文件的权限。
- 第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。
所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
查看文件权限:ls -l file
bash-3.2# ls -l test.html
-rw-r--r-- 1 tongkun staff 208 12 26 21:18 test.html
说明:
- 横线代表空许可
- r代表只读
- w代表写
- x代表可执行
注意这里有10个位置,第一个字符制定文件类型。如果第一个字符是横线,表示一个非目录文件,如果是d,表示是一个目录。
-rw-r--r-- 说明:
test.html是一个普通文件,对属主有读写权限,对属同组用户有只读权限,对其他用户有只读权限。
二、使用chmod的字母和数字改变文件或目录的访问权限
- chmod命令用于改变文件活目录的访问权限
- chmod有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
-
1. 文字设定法
chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义是:
- u 表示用户(user),即文件和目录的所有者
- g 表示同组用户(group),即与文件属主有相同id的所有用户
- o 表示其他用户
- a 表示所有用户,他是系统的默认值
操作符:
- + 添加某个权限
- - 取消某个权限
- = 赋予给定权限并取消其他所有权限(如果有的话)
mode所表示的权限可用于下注字符的任意组合:
- r 可读
- w 可写
- x 可执行
- X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
- s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
- t 保存程序的文本到交换设备上。
- u 与文件属主拥有一样的权限。
- g 与和文件属主同组的用户拥有一样的权限。
- o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example
2. 数字设定法
用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
chmod [mode] 文件名¼
文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。
- r:对应数值4
- w:对应数值2
- x:对应数值1
- -:对应数值0
只是包rwx看成二进制数。有则1表示,无则0表示。所以 -rwx r-x r--则表示为111 101 100 十进制数为754
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:
例如,我们想让a.txt这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:
chmod 644 a.txt
如果一个文件的权限全部放开,则权限数字即为 777
chmod 777 a.txt
如果想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。
chomd -R 777 /Hexo
则Hexo目录下所有文件对所有用户授予读写和执行的权限。
三、是用chown更改文件的拥有者权限
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
命令说明
1.命令格式:
chown [选项]... [所有者][:[组]] 文件...
2.命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
3.命令参数:
必要参数:
- -c 显示更改的部分的信息
- -f 忽略错误信息
- -h 修复符号链接
- -R 处理指定目录以及其子目录下的所有文件
- -v 显示详细的处理信息
- -deference 作用于符号链接的指向,而不是链接文件本身
选择参数:
- --reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
- --from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
- --help 显示帮助信息
- --version 显示版本信息
命令实例
实例1. 改变拥有者和群组
命令:chown tongkun:everyone Mysql日志分析.md
说明:更改拥有者为tongkun, 群组为everyone群组
实例2. 更改目录的拥有者和群组
命令:chown -R tongkun:everyone dir
说明:更改目录以及子目录子文件的拥有者和群组