1.权限讲解
首先我们以长列表形式打开一下文件
1.1.权限所属
把第一项“lrwxrwxrwx.”提取出来,这里做下解释
lrwxrwxrwx.
l rwx rwx rwx
文件类型 文件所有者权限 文件所属组权限 其他用户权限
末尾的“.” 表示文件访问控制列表(facl)的情况
第一组rwx | 该文件所有者的权限 |
第二组rwx | 该文件所属组的权限 |
第三组rwx | 其他用户权限 |
1.2.权限字母含义
文件中
对应字母 | 权限含义 |
---|---|
r | 查看文件 |
w | 修改文件 |
x | 执行文件 |
目录中
对应字母 | 权限含义 |
---|---|
r | 列出目录 |
w | 目录中添加文件 |
x | 进入目录 |
2.修改权限
修改权限可以使用chmod命令
2.1.chmod 基本使用
chmod 参数
u 修改用户
g 修改组
o 修改其它
a 修改所有人
chmod 运算符
+ 加权限
- 减权限
= 等权限
chmod 用法举例
chmod u+x filename 为所有者加上x权限
chmod u-x filename 剥除所有者x权限
chmod g+w filename 为所属组加上w权限
chmod o+x filename 为其他用户加上x权限
chmod o-x filename 剥除其他用户x权限
chmod u=rw filename 令所有者权限等于rw
chmod a=rwx filename 令所有人权限等于rwx
chmod u=rw,o=rwx filename 令所有者权限等于rw,
令其他用户权限等于rwx
2.2.数字标记法
数字标记法是为了更方便的修改权限,用计数表示三个权限内容,即有该权限就取1,无该权限则取0.
--- 无任何权限 000 故每一位取 0
--x 只有执行权限 001 故执行位取1其他位取0
-w- 只有写入权限 010 故写入位取1其他位取0
-wx 有写入执行权限 011 故写入执行位取1其他位取0
r-- 只有读入权限 100 故读入位取1其他位取0
r-x 有读入和执行权限 101 故读入和之星位取1其他位取0
rw- 有读入和写入权限 110 故读入位和写入位取1其他位取0
rwx 有所有权限 111 故所有位都取1
而将取的位数当成二进制,就可转换为:
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
故有以下用法
chmod 777 filename
(等价于 chmod a=rwx filename)
chmod 056 filename
(等价于 chmod u=-,g=rx,o=rw filename)
需要注意的是“chmod u=7 filename”是错误用法
默认新创建文件权限644
默认新创建目录权限755
权限存在umask中
3.所属修改
3.1.chown命令
更改所属组和所有者可以用chown命令
格式:
chown 用户名:用户组 filename
举例:
chown redhat filename 改所有者为redhat
chown redhat.redhat filename 改所有者和所属组为redhat
chown redhat. filename 改所有者和所属组为redhat
chown .redhat filename 改所属组为redhat
而“.” 可以换为“:”,用法一样
chown redhat:redhat 改2个选项
chown redhat: 改两个选项
chown :redhat 改后一个选项
注意!尽量用“:”
3.1.chgrp命令
chgrp命令只能专门修改所属组
chgrp redhat xixi/ 修改所属组为redhat
可听可不听的碎碎念:权限限制对root账号没用,它想看啥看啥,想干啥就干啥。
4.文件访问控制列表(facl)
文件访问控制列表facl和网络中acl有些类似,可以实现对访问者的管理,放行或限制都能做到。
lrwxrwxrwx. ‘.’刚刚我们取了一项讲解,而其末尾的"."显示的就是 文件访问控制列表 FACL的状态
我们可以用
setfacl 定义文件访问控制列表
getfacl 查看文件访问控制列表
格式
setfacl [参数] <u or g>:<用户 or 组>:<权限> filename
setfacl -m u:redred:r filename 设置redhat用户允许读
setfacl -m g:redred:r filename 设置redhat组允许读
setfacl -m g:redred:- filename 设置redhat组禁止访问
setfacl -x g:redred filename 删组redhat权限
setfacl -x u:redred filename 删用户redhat权限
getfacl hehe 查看hehe文件的facl情况
如果设置过facl那前面的“.”会变为“+”
"."变“+”说明有文件访问控制列表,或者曾经有
如果要把"+"还原为".",可以执行下列命令
setfacl -b hehe
5.文件属性修改
有这么一种情况比如,服务器成精了,天天和员工聊天,严重干扰工作秩序,我就找道长下了一个开过光的文件,用来镇邪,任何人不准删除它,“任何人不能删除它”这种限制就是文件属性限制,可以用chattr实现。
格式
chattr 参数 filename
举例
chattr +a haha 将haha文件权限设置为a,即不能删除,也只能追加
chattr -a haha 去掉haha文件的a属性
chattr +i haha 将haha文件设置为i,即禁止任何操作
chattr -i haha 去掉haha文件的i属性
lsattr hehe 查看hehe文件的属性f