权限是操做系统用来限制资源访问的机制,权限通常分为读、写、执行。linux
系统中每一个文件都拥有特定的权限、所属用户及所属组,经过这样的机制来限制哪些用户、哪些组能够对特定的文件进行什么样的操做。安全
每一个进程都是以某个用户的身份运行,因此进程的权限与该用户的权限同样,用户的权限越大,该进程所拥有的权限也就越大。bash
Linux 中,每一个文件拥有如下三种权限:测试
权限 | 对文件的影响 | 对目录的影响 |
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 能够修改文件内容 | 可在目录建立、删除文件 |
x(执行) | 能够做为命令执行 | 可访问目录内容 |
因此,目录必须拥有 "x" 权限才可查看其内容。不少时候,执行权限 "x" 对于目录而言也叫浏览权限。仅有 "r" 权限是没法查看目录内容的(由于连访问都作不到)。spa
Linux 权限基于 UGO 模型进行控制:操作系统
命令 ls -l 能够查看当前目录下全部文件的详细信息:.net
上图中,每一行的格式以下:3d
drwxr-xr-x. | 2 | mingc | mingc | 4096 | Sep 23 14:54 | Desktop |
UGO模型的权限code 第1位是文件类型描述符,"d"表示目录,"-"表示文件blog 第2-4位"rwx"是U模型权限,可读可写可执行 第5-7位"r-x"是G模型权限,可读可执行,不可写 第8-10位"r-x"是O模型权限 |
连接数量 | 所属用户U | 所属组G | 大小 | 日期时间 | 文件或目录名 |
命令 chown 用以改变文件的所属用户:
chown username filename
经常使用参数:
-R 归地修改目录下全部文件的所属用户
命令 chgrp 用以改变文件的所属组:
chgrp groupname filename
经常使用参数:
-R 递归地修改目录下全部文件的所属组
命令 chmod 用以修改文件的权限:
chmod mode filename
mode 参数格式以下:
u、g、o 分别表明用户、组、其余 a 表明ugo +、- 表明加入或删除对应权限 r、w、x 表明三种权限 -R 递归地修改
示例:
chmod u +rw test.md 给文件的所属用户添加rw权限 chmod g -x test.md 给文件的所属组移除x权限 chmod go +r test.md 给文件的所属组和其余用户添加r权限 chmod a -x test.md 给文件的所属UGO三个模型均移除x权限
命令 chmod 也支持以三位八进制数值的方式修改权限,rwx 权限值分别由数字表示以下:
r = 4 (2 ^ 2) w = 2 (2 ^ 1) x = 1 (2 ^ 0)
使用数字表示权限时,每组权限分别为对应数字之和:
rw = 4 + 2 = 6 rwx = 4 + 2 + 1 = 7 r-x = 4 + 1 = 5
因此,使用数字表示 UGO 权限时,能够用以下方式表示:
chmod 0660 test.md 设置 UGO 权限为 rw-rw---- chmod 0775 test.md 设置 UGO 权限为 rwxrwxr-x
如今有个某公司 Company,部门和员工以下:
部门 | 员工 |
培训部(Training) | 李雷(LiLei) 王雪(WangXue) |
市场部(Market) | 韩梅梅(HanMeimei) 林立(LinLi) |
管理部(Manage) | 路人甲(User1) 路人乙(User2) |
不行了,名字想不出来了~~
如今,要为每一个部门和员工创建相应的工做文件夹,要求以下:
好的,下面开始:
用组来表示部门,用用户来表示员工,我以 root 用户登陆添加组和用户,并为用户指定附属组(部门):
为了让整个公司的文件夹 Company 有足够的访问权限,在根目录 "/" 下建立公司的文件夹目录 /Company,并建立三个部门子目录,去掉每一个部门目录的 O 模型权限并指定所属部门:
OK,这样就知足了前 3 个要求:有统一文件夹和多个不一样的部门目录,而且不一样部门之间全没有 O 模型权限,不能访问对方。
下面继续建立员工目录,并为每一个目录指定它的所属员工和所属部门:
好的,第 4 和第 5 个要求也知足了:每一个员工有本身的文件夹,而且不一样员工之间只能查看不能修改。
最后测试一下,登陆 LiLei 帐号:
不一样部门之间不能查看,同一部门之间能够查看不能修改,完成。
相关连接: