基本权限UGO
(1)重要,知识点少
(2)回顾:进程访问文件
文件权限设置:可以在赋予某个用户或组,能够以何种方式,访问某个文件
- u:rwx
- g:rwx
- o:rwx
文件权限管理之:UGO设置基本权限(r,w,x)
-rw-rw-r–. 1 hulk hulk 0 3月 16 04:36 file1
权限对象:
- 属主: u 所有者
- 属组: g 属组
- 其他人: o 其他人
权限类型:
- 读: r 4
- 写: w 2
- 执行:x 1
-rw-rw-r–. 1 hulk hulk 0 3月 16 04:36 file1
问题:hulk有什么权限
(1)hulk是所有者吗?是,rw
(2)hulk属于什么组?rw
(3)tom为其他人?是,r
rwx | rw | r | alias | hr | file1 |
---|---|---|---|---|---|
属主 | 属组 | 其他人 | 属主 | 属组 | 文件名 |
1.设置权限
1.更改文件的 属主、属组
chown:语法
用法:chown [选项]...[所有者][:[组]] 文件...
修改属主/所有者
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 root root 2504 3月 14 13:29 new.txt
[root@localhost ~]# chown hulk new.txt 修改属组为hulk
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 hulk root 2504 3月 14 13:29 new.txt
修改属组
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 hulk root 2504 3月 14 13:29 new.txt
[root@localhost ~]# chown .hulk new.txt
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 hulk hulk 2504 3月 14 13:29 new.txt
看这个:
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 hulk hulk 2504 3月 14 13:29 new.txt
[root@localhost ~]# chown root.root new.txt
[root@localhost ~]# ll new.txt
-rw-r--r--. 1 root root 2504 3月 14 13:29 new.txt
chgrp:语法
用法:chgrp [选项]… 用户组 文件…
[root@localhost ~]# chgrp -R hulk new.txt //R:递归
[root@localhost ~]# ll new.txt
-rwxr---w-. 1 root hulk 2504 3月 14 13:29 new.txt
2.更改权限
语法:chomd [u/g/o/a] [±=] 文件名
使用符号
对象 | 赋值符 | 权限类型 | |
---|---|---|---|
u | + | r | |
chmod | g | - | w |
o | = | x | |
a(所有人) |
注意:7 = 007,输入时标准3位
使用数字
chown和chomd区别:
语法:chomd [u/g/o/a] [+-=] 文件名
用法:chown [选项]...[所有者][:[组]] 文件...
chown:Linux中用来改变某个文件的属主命令,如漫画中所示,将某个“资源”(门)的访问权限给予别人
chmod:Linux中用来改变某个文件的访问模式的命令,如漫画中所示,chmod 777(门)会将某个‘大门’敲开,谁都可以进去了
权限设置案例UGO
设置案例权限
针对hr部门的访问目录/home/hr设置权限,要求如下:
1、root用户对hr组的员工可以读、写、执行
2、其他用户没有任何权限
[root@localhost ~]# groupadd hr
[root@localhost ~]# useradd hr01 -G hr
[root@localhost ~]# useradd hr02 -G hr
[root@localhost ~]# mkdir /home/hr
[root@localhost ~]# chgrp hr /home/hr
[root@localhost ~]# chmod 770 /home/hr
[root@localhost ~]# ll -d /home/hr/
drwxrwx---. 2 root hr 6 3月 16 08:06 /home/hr/
重要:r、w、x、权限对文件和目录的意义
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读入) | 可以读取文件的内容 | 可以列出目录的内容(文件名) |
w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任一文件 |
x(可执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限) |
实战案例:
r、w、x、对文件的影响
实战1:r对文件的影响
[root@localhost ~]# vim /home/file1
data
[root@localhost ~]# ll /home/file1
-rw-r--r--. 1 root root 5 3月 16 08:28 /home/file1 //修改前,alias(其他人)只有读
[root@localhost ~]# su - alias
[alias@localhost ~]$ cat /home/file1 //测试读 YES
data
实战2:x对文件的影响
[alias@localhost ~]$ /home/file1
-bash: /home/file1: 权限不够 //测试执行 ON
[root@localhost ~]# chmod o+x /home/file1 //为其他用户添加读的权限,绿色代表可以执行
[root@localhost ~]# chmod o-x /home/file1
[root@localhost ~]# chmod u+x /home/file1
[root@localhost ~]# ll /home/file1
-rwxr--r--. 1 root root 5 3月 16 08:28 /home/file1
[root@localhost ~]# su - alias
[alias@localhost ~]$ /home/file1
-bash: /home/file1: 权限不够
align='left’实战3:w对文件的影响</
[root@localhost ~]# chmod o+w /home/file1
[root@localhost ~]# su - alias
[alias@localhost ~]$ vim /home/file1
[alias@localhost ~]$ cat /home/file1 //测试写权限
data
alias
r、w、x、对目录的影响
实战1:对文件有rwx,对目录没有w权限
不能删除
[root@localhost ~]# mkdir /dir1
[root@localhost ~]# touch /dir1/file1
[root@localhost ~]# chmod 777 /dir1/file1
[root@localhost ~]# ll -d /dir1/
drwxr-xr-x. 2 root root 19 3月 16 09:40 /dir1/
[root@localhost ~]# ll -d /dir1/file1
-rwxrwxrwx. 1 root root 0 3月 16 09:40 /dir1/file1
[root@localhost ~]# su - alias
[alias@localhost ~]$ cat /dir1/file1
[alias@localhost ~]$ rm -rf /dir1/file1
rm: 无法删除'/dir1/file1': 权限不够
实战2:对文件没有任何权限,对目录有所有权限
小结:对目录有w写权限,可以在目录中创建文件,可以删除目录中的文件(跟文件权限无关)
[root@localhost ~]# chmod a=- /dir1/file1
[root@localhost ~]# chmod a=rwx /dir1/
[root@localhost ~]# ll -d /dir1/
drwxrwxrwx. 2 root root 19 3月 16 09:40 /dir1/
[root@localhost ~]# ll -d /dir1/file1
----------. 1 root root 0 3月 16 09:40 /dir1/file1
[root@localhost ~]# su - alias
[alias@localhost ~]$ ll -d /dir1/file1
----------. 1 root root 5 3月 16 09:53 /dir1/file1
[alias@localhost ~]$ cat /dir1/file1
cat: /dir1/file1: 权限不够
[alias@localhost ~]$ /dir1/file1
-bash: /dir1/file1: 权限不够
[alias@localhost ~]$ vim /dir1/file1
权限不够
[alias@localhost ~]$ rm -rf /dir1/file1
[alias@localhost ~]$ touch /dir1/file2
重点
什么叫删文件:
- r如果对一个文件有rwx权限,意味着可以(读、写、修改文件内容、可以执行),就是没有删除
如果对目录有rwx;
- r:可以看到里面的文件
- w:可以在目录下创建删除文件
- x:可以进入目录里面去
注意事项:
- 文件:x权限要小心给予
- 目录:w权限小心给予
基本ACL
UGO设置基本权限: 只能一个用户,一个组和其他人
ACL 设置基本权限: r,w,x
很多对象想访问某个文件,可以设置不同的权限,解决了UGO的瓶颈
acl:访问控制列表
getfac
[root@localhost ~]# getfacl /home/file
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
group::r--
other::r--
setfacl -m
setfacl -m u:alias:rw /home/file
[root@localhost ~]# setfacl -m u:alias:rw /home/file
[root@localhost ~]# getfacl /home/file
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
user:alias:rw-
group::r--
mask::rw-
other::r--
一旦文件后面有+号,表示有单独的acl
[root@localhost ~]# ll /home/file
-rw-rw-r--+ 1 root root 0 3月 16 14:50 /home/file
rw:已经是mask的权限,不是组的权限
帮助命令中的EXAMPLES
授予其他用户读取访问权限
- setfacl -m u:lisa:r file
撤消所有组和所有命名用户的写访问权限(使用有效权利屏蔽)
- setfacl -m m::rx file
从文件的ACL中删除命名的组条目
- setfacl -x g:staff file
将一个文件的ACL复制到另一个文件
- getfacl file1 | setfacl --set-file=- file2
将访问ACL复制到默认ACL
- getfacl --access dir | setfacl -d -M- dir
示例:
[root@localhost ~]# setfacl -m g:alias:rw /home/file
[root@localhost ~]# getfacl /home/file 快捷键Esc+.
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
user:faker:rwx
user:alias:rw-
group::r--
group:alias:rw- //增加alias组权限
mask::rwx
other::r--
[root@localhost ~]# setfacl -m u:alias:- /home/file
[root@localhost ~]# getfacl /home/file
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
user:faker:rwx
user:alias:--- //增加alias用户权限
group::r--
group:alias:rw-
mask::rwx
other::r--
删除alias
例如:…放弃吧,alias访问时无权限
[root@localhost ~]# setfacl -x u:alias /home/file
[root@localhost ~]# getfacl /home/file
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
user:faker:rwx ==删除了alisa用户的权限==
group::r--
group:alias:rw-
mask::rwx
other::---
查看/删除:
[root@localhost ~]# setfacl -x g:alias /home/file
[root@localhost ~]# setfacl -b /home/file
[root@localhost ~]# getfacl /home/file
getfacl: Removing leading '/' from absolute path names
# file: home/file
# owner: root
# group: root
user::rw-
group::r--
other::---
查看帮助
[root@localhost ~]# man setfacl
- /EXAMPLES
复制
getfacl /home/file | setfacl --set-file=- /home/file2
touch /home/file2
setfacl -m u:alias:rwx /home/file
getfacl /home/file | setfacl --set-file=- /home/file2
getfacl: Removing leading '/' from absolute path names
[root@localhost ~]# getfacl /home/file2
getfacl: Removing leading '/' from absolute path names
# file: home/file2
# owner: root
# group: root
user::rw-
user:alias:rwx
group::r--
mask::rwx
other::---
ACl高级特性
mask:水涨船高 只要有任何的acl就会变化
default:继承是以后的事情,之前的不算
mask:
- 水涨船高 只要有任何的acl就会变化用于临时降低用户或组(除属主和其他人)的权限
建议:为了方便管理文件权限,其他人的权限为空
小结:可以降低用户和组的权限
[root@10 ~]# setfacl -m u:alias:r,u:tom:rw,g:hr:rwx /home/file1
[root@10 ~]# getfacl /home/file1
getfacl: Removing leading '/' from absolute path names
# file: home/file1
# owner: root
# group: root
user::rw-
user:alias:r--
user:tom:rw-
group::r--
group:hr:rwx
mask::rwx
other::r---
[root@10 ~]# setfacl -m m::r /home/file1
[root@10 ~]# getfacl /home/file1
getfacl: Removing leading '/' from absolute path names
# file: home/file1
# owner: root
# group: root
user::rw-
user:alias:r--
user:tom:rw- #effective:r--
group::r--
group:hr:rwx #effective:r--
mask::r--
other::r--
让全世界安静
[root@10 ~]# setfacl -m m::--- /home/file1
[root@10 ~]# getfacl /home/file1
getfacl: Removing leading '/' from absolute path names
# file: home/file1
# owner: root
# group: root
user::rw-
user:alias:r-- #effective:---
user:tom:rw- #effective:---
group::r-- #effective:---
group:hr:rwx #effective:---
mask::---
other::r--
default:继承(默认)
要求希望alias能够对/home已经以后在/home下的文件有读、写、执行权限
步骤1:赋予alias对/home读、写、执行权限
[root@10 ~]# setfacl -m u:alias:rwx /home/
步骤2:赋予alias对以后在/home下新建的文件有读、写、执行
[root@10 ~]# setfacl -m d:u:alias:rwx /home/
[root@10 ~]# mkdir /111
[root@10 ~]# setfacl -m u:alias:rwx /111
[root@10 ~]# getfacl /111/
getfacl: Removing leading '/' from absolute path names
# file: 111/
# owner: root
# group: root
user::rwx
user:alias:rwx
group::r-x
mask::rwx
other::r-x
[root@10 ~]# mkdir /111/222
[alias@10 ~]$ touch /111/file1 ==alias为继承111的权限==
[alias@10 ~]$ touch /111/222/file ==touch: 无法创建 '/111/222/file': 权限不够==