通过对文件设定权限,可以达到三种访问限制权限:
查看某个文件的权限
[root@localhost Desktop]# ll aaa.txt
-rw-r--r-- 1 root root 4 Dec 3 11:00 aaa.txt
权限的解释:
- |
rwx |
r-x |
r-x |
user1 |
user1 |
time |
FILENAME |
文件类型 |
拥有者的权限 |
所属组的权限 |
其他人的权限 |
拥有者 |
属组 |
最后修改时间 |
对象 |
p:表示命名管道文件
d:表示目录文件
l:表示普通文件
-:表示普通文件
s:表示socket套接口文件(启用mysql时,产生的mysql.sock文件就是套接口文件)
c:表示字符设备文件(tty0 或 虚拟控制台)
b:表示块设备文件(sda,cdrom)
对于文件来说:
r:读
w:写
x:执行
对于目录来说:
r:读(看到目录里面有什么) ls
w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
x:进入 cd cat
U:所有者,就是创建文件的用户。这个用户拥有对它创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
G:用户组,用户组是具有相同特征用户的逻辑集合。有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
O:其他用户,系统内的其他所有者用户就是other用户类。
注意:
以什么用户身份登录,此时创建的目录或文件,自动拥有该文件的属主和属组。
用来修改文件或目录的属主/属组
创建测试环境
[root@localhost home]# useradd wangbin
[root@localhost home]# groupadd changmengka
[root@localhost Desktop]# touch test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 08:57 test.txt
把文件或目录的属主改为wangbin用户、属组改为changmengka这个组
[root@localhost Desktop]# chown wangbin:changmengka test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 wangbin changmengka 0 Dec 4 09:00 test.txt
把文件或目录的属主改为wangbin这个用户
[root@localhost Desktop]# chown wangbin test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 wangbin root 0 Dec 4 09:02 test.txt
把文件或目录的属组改为changmengka这个组
[root@localhost Desktop]# chown :changmengka test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root changmengka 0 Dec 4 09:04 test.txt
自动继承wangbin这个用户的所有组
[root@localhost Desktop]# chown wangbin: test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 wangbin wangbin 0 Dec 4 09:09 test.txt
用来修改文件或目录的属组
参数:
-R:递归,目录下的所有内容都更改,没有递归参数只修改目录
[root@localhost Desktop]# chgrp changmengka test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 wangbin changmengka 0 Dec 4 09:09 test.txt
用来修改文件/目录的权限
语法:chmod 操作对象 操作符 赋予的权限 文件/目录
u:表示用户,文件或目录的所有者
g:表示用户组,文件或目录的所属用户组
o:表示其他用户
a:表示所有用户
+:表示添加权限
-:表示减少权限
=:表示给定权限
r:表示读
w:表示写
x:表示执行
[root@localhost Desktop]# touch test{1..5}.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 09:34 test1.txt
-rw-r--r-- 1 root root 0 Dec 4 09:34 test2.txt
-rw-r--r-- 1 root root 0 Dec 4 09:34 test3.txt
u-w:
[root@localhost Desktop]# chmod u-w test1.txt
[root@localhost Desktop]# ll test1.txt
-r--r--r-- 1 root root 0 Dec 4 09:34 test1.txt
g+x:
[root@localhost Desktop]# chmod g+x test2.txt
[root@localhost Desktop]# ll test2.txt
-rw-r-xr-- 1 root root 0 Dec 4 09:34 test2.txt
a=rwx:
[root@localhost Desktop]# chmod a=rwx test3.txt
[root@localhost Desktop]# ll test3.txt
-rwxrwxrwx 1 root root 0 Dec 4 09:34 test3.txt
权限 |
二进制值 |
八进制值 |
描述 |
--- |
000 |
0 |
没有任何权限 |
--x |
001 |
1 |
只有执行权限 |
-w- |
010 |
2 |
只有写入权限 |
-wx |
011 |
3 |
有写入和执行权限 |
r-- |
100 |
4 |
只有读取权限 |
r-x |
101 |
5 |
有读取和执行权限 |
rw- |
110 |
6 |
有读取和写入权限 |
rwx |
111 |
7 |
有全部权限 |
[root@localhost Desktop]# touch test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 09:43 test.txt
如果一个文件权限如(-rwx-wxr-x)那么他的二进制与八进制计算如下:
二进制:
rwx:111;-wx:011;r-x:101;表示结果:111011101
八进制:
rwx:7;-wx:3;r-x:5;表示结果:735
[root@localhost Desktop]# touch test.txt
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 09:43 test.txt
[root@localhost Desktop]# chmod 735 test.txt
[root@localhost Desktop]# ll
total 0
-rwx-wxr-x 1 root root 0 Dec 4 09:43 test.txt
权限有读取、写入、执行三种,这些权限对访问文件或目录的影响如下:
权限 |
对文件的影响 |
对目录的影响 |
r(读取) |
可以读取文件的内容 |
可以列出目录的内容(文件名) |
w(写入) |
可以更改文件的内容 |
可以创建或删除目录中的任意文件 |
x(执行) |
可以作为命令执行文件 |
可以访问目录的内容(取决于目录中文件的权限) |
文件的特殊权限有3种:
SUID:设置用户ID。限定:只能设置在二进制可执行程序上面,对目录设置无效;功能:程序运行时的权限从执行者变更成程序所有者的权限。
SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置。功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
Stickybit:粘滞位权限。它是针对目录的,对文件无效,也叫防删除位。
SUID |
SGID |
Stickybit |
u+s或u=4 |
g+s或g=2 |
o+t或o=1 |
[root@localhost Desktop]# ll
total 0
-rwx-wxr-x 1 root root 0 Dec 4 09:43 test.txt
[root@localhost Desktop]# chmod u+s test.txt
[root@localhost Desktop]# ll
total 0
-rws-wxr-x 1 root root 0 Dec 4 09:43 test.txt
SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 11:57 test2.txt
[root@localhost Desktop]# chmod 4755 test2.txt
[root@localhost Desktop]# ll
total 0
-rwsr-xr-x 1 root root 0 Dec 4 11:57 test2.txt
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 13:11 test.txt
[root@localhost Desktop]# chmod g+s test.txt
[root@localhost Desktop]# ll
total 0
-rw-r-Sr-- 1 root root 0 Dec 4 13:11 test.txt
[root@localhost Desktop]#
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 13:14 test.txt
[root@localhost Desktop]# chmod 2755 test.txt
[root@localhost Desktop]# ll
total 0
-rwxr-sr-x 1 root root 0 Dec 4 13:14 test.txt
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 13:17 test
[root@localhost Desktop]# chmod o+t test
[root@localhost Desktop]# ll
total 0
-rw-r--r-T 1 root root 0 Dec 4 13:17 test
[root@localhost Desktop]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 4 13:18 test
[root@localhost Desktop]# chmod 1755 test
[root@localhost Desktop]# ll
total 0
-rwxr-xr-t 1 root root 0 Dec 4 13:18 test
查看文件或目录的ACL权限
[root@localhost Desktop]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
group::r--
other::r—
设置某个用户对此文件拥有什么权限
[root@localhost Desktop]# setfacl -m u:wangbin:rwx test.sh
[root@localhost Desktop]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:wangbin:rwx
group::r--
mask::rwx
other::r—
设置某个用户组对此文件拥有什么权限
[root@localhost Desktop]# setfacl -m g:changmengka:rw- test.sh
[root@localhost Desktop]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:wangbin:rwx
group::r--
group:changmengka:rw-
mask::rwx
other::r—
设置某个其他用户对此文件拥有什么权限
[root@localhost Desktop]# setfacl -m o::rwx test.sh
[root@localhost Desktop]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:wangbin:rwx
group::r--
group:changmengka:rw-
mask::rwx
other::rwx
设置某个mask用户对此文件拥有什么权限
[root@localhost Desktop]# setfacl -m m::rwx test.sh
[root@localhost Desktop]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:wangbin:rwx
group::r--
group:changmengka:rw-
mask::rwx
other::rwx
此目录下新建的目录或文件都继承此ACL的权限
[root@localhost Desktop]# setfacl -m d:u:wang:rwx dir_file/
[root@localhost Desktop]# getfacl dir_file/
# file: dir_file/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:wang:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
展示:
[root@localhost Desktop]# cd dir_file/
[root@localhost dir_file]# touch test_inner.txt
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r—
-R一定要在-m之前,这样表示目录下所有文件都拥有这用ACL权限
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
user:wang:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
[root@localhost dir_file]# setfacl -R -m u:wang:r-x test_inner.txt
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
user:wang:r-x
group::r-x
mask::r-x
other::r—
去文件中掉所有的ACL权限
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
user:wang:r-x
group::r-x
mask::r-x
other::r--
[root@localhost dir_file]# setfacl -b test_inner.txt
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
group::r-x
other::r—
去掉文件中某个用户的ACL权限
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
user:wang:rwx
group::r-x
mask::rwx
other::r--
[root@localhost dir_file]# setfacl -x u:wang test_inner.txt
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
group::r-x
mask::r-x
other::r—
附例:
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
group::r-x
group:changmengka:rwx
mask::rwx
other::r--
[root@localhost dir_file]# setfacl -x g:changmengka test_inner.txt
[root@localhost dir_file]# getfacl test_inner.txt
# file: test_inner.txt
# owner: root
# group: root
user::rw-
group::r-x
mask::r-x
other::r—
25.文件系统管理-chown+chgrp+chmod+setfacl+getfacl
原文:https://www.cnblogs.com/ai-fei-ai/p/14177423.html