您的位置:首页 > 运维架构 > Linux

Linux 用户&文件权限

2015-12-27 18:50 495 查看
在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有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。


文字设定法

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


数字设定法

用数字表示的属性的含义: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命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。


命令说明


命令格式:


chown [选项]… [所有者][:[组]] 文件…

命令功能:


通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

命令参数:


必要参数:

-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身

选择参数:

--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
--help 显示帮助信息
--version 显示版本信息


命令实例


实例1. 改变拥有者和群组


命令:chown tongkun:everyone Mysql日志分析.md

说明:更改拥有者为tongkun, 群组为everyone群组

实例2. 更改目录的拥有者和群组


命令:chown -R tongkun:everyone dir

说明:更改目录以及子目录子文件的拥有者和群组
参考: http://www.cnblogs.com/avril/archive/2010/03/23/1692809.html http://blog.chinaunix.net/uid-25052030-id-174343.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: