Linux(文件特殊属性 + FACL 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

数据库安装的其中一个步骤

MySQL :: Download MySQL Community Server (Archived Versions)

实验:

[root@study ~]# ll
total 393736
-rw-------. 1 root root      1374 Oct 31 02:36 anaconda-ks.cfg
-rw-r--r--. 1 root root 403177622 Nov 11 04:27 mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
[root@study ~]# tar xvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

有些所有者和属组是缺失的

[root@study ~]# ll
total 393736
-rw-------.  1 root root      1374 Oct 31 02:36 anaconda-ks.cfg
drwxr-xr-x. 13 root root       191 Nov 11 04:29 mysql-5.6.46-linux-glibc2.12-x86_64
-rw-r--r--.  1 root root 403177622 Nov 11 04:27 mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
[root@study ~]# ll mysql-5.6.46-linux-glibc2.12-x86_64
total 248
...
-rw-r--r--.  1 7161 31415 221739 Sep 27  2019 LICENSE
...
-rw-r--r--.  1 7161 31415    587 Sep 27  2019 README
...

文件没有主人会导致出现问题

程序的启动需要配置一个系统用户

[root@study ~]# useradd -r -s /sbin/nologin==/bin/false -u 336 mysql

将解压的文件夹放到/usr/local/

[root@study ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /usr/local/
[root@study ~]# ll /usr/local/
total 0
...
drwxr-xr-x. 13 root root 191 Nov 11 04:29 mysql-5.6.46-linux-glibc2.12-x86_64
...

创建软连接

[root@study ~]# ln -s /usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 /usr/local/mysql
[root@study ~]# ll /usr/local
total 0
lrwxrwxrwx.  1 root root  46 Nov 11 04:41 mysql -> /usr/local/mysql-5.6.46-linux-glibc2.12-x86_64
drwxr-xr-x. 13 root root 191 Nov 11 04:41 mysql-5.6.46-linux-glibc2.12-x86_64

将所有文件的属主和属组改为mysql

[root@study ~]# chown -R mysql.mysql /usr/local/mysql 不加/改的是软连接
[root@study ~]# chown -R mysql.mysql /usr/local/mysql/ 加/改的是文件夹内部
[root@study ~]# ll /usr/local/mysql/
total 248
drwxr-xr-x.  2 mysql mysql   4096 Nov 11 04:40 bin
...

设定文件特殊属性

不能删除,改名,更改
chattr +i

只能追加内容
chattr +a

显示特定属性
lsattr

charttr +i

[root@study data]# cp /etc/fstab f1.txt
[root@study data]# ll
total 4
-rw-r--r--. 1 root root 465 Nov 11 08:18 f1.txt
[root@study data]# chattr +i f1.txt
[root@study data]# rm -rf f1.txt
rm: cannot remove ‘f1.txt’: Operation not permitted
[root@study data]# echo 21312321 > f1.txt
-bash: f1.txt: Permission denied
[root@study data]# lsattr f1.txt
----i----------- ./f1.txt

 charttr -i

[root@study data]# chattr -i f1.txt
[root@study data]# lsattr f1.txt
---------------- f1.txt

charttr +a

[root@study data]# chattr +a f1.txt
[root@study data]# lsattr f1.txt
-----a---------- f1.txt
[root@study data]# echo 21321321 > f1.txt
-bash: f1.txt: Operation not permitted
[root@study data]# echo newline >> f1.txt

charttr -a

[root@study data]# chattr -a f1.txt
[root@study data]# lsattr f1.txt
---------------- f1.txt

访问控制列表

环境说明:假如文件属性不变这个时候wang 用户和 test 用户访问这个文件想要不同的权限也就是除了文件所属者 文件所属组 其他人 3类人的其他人 

ACL权限功能

setfacl 可以设置ACL权限

getfacl 可查看设置的ACL权限

[root@study data]# ll
total 4
-rw-r--r--. 1 root root 158 Nov 11 08:30 f1.txt
[root@study data]# su wang
[wang@study data]$ cat f1.txt
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

setfacl -m不给wang用户权限

 + 代表设置了acl权限

[root@study data]# setfacl -m u:wang:0 f1.txt
[root@study data]# ll f1.txt
-rw-r--r--+ 1 root root 158 Nov 11 08:30 f1.txt
[root@study data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:---
group::r--
mask::r--
other::r--

[root@study data]# su wang
[wang@study data]$ cat f1.txt
cat: f1.txt: Permission denied

 setfacl -m给test用户rw

[root@study data]# setfacl -m u:test:rw f1.txt
[root@study data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:---
user:test:rw-
group::r--
mask::rw-
other::r--

[root@study data]# su test
[test@study data]$ cat f1.txt
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[test@study data]$ echo 21312 >>  f1.txt
[test@study data]$ cat f1.txt
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
21312

 setfacl -x 指定删除

[root@study data]# setfacl -x u:wang f1.txt
[root@study data]# setfacl -x u:test f1.txt
[root@study data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

 setfacl -b 全部删除

[root@study data]# setfacl -b f1.txt
[root@study data]# ll
total 4
-rw-r--r--. 1 root root 164 Nov 11 08:57 f1.txt

 setfacl -Rm 文件夹 递归赋值

[root@study data]# mkdir dir
[root@study data]# cp /etc/hosts dir/
[root@study data]# setfacl -Rm u:wang:rwx dir/

[root@study data]# getfacl dir
# file: dir
# owner: root
# group: root
user::rwx
user:wang:rwx
group::r-x
mask::rwx
other::r-x

[root@study data]# getfacl dir/hosts
# file: dir/hosts
# owner: root
# group: root
user::rw-
user:wang:rwx
group::r--
mask::rwx
other::r--

 setfacl -Rb 文件夹 递归删除

[root@study data]# setfacl -Rb dir/
[root@study data]# getfacl dir
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

 acl 比chmod 安全 acl 还可以还原权限 chmod 和 acl不冲突!

acl 对other不起作用 

mask 权限

影响所有者和other的之外的人和组的最大权限

对于acl权限设置的最高权限

举例

[root@study data]# touch f1.txt
[root@study data]# setfacl -m u:wang:rwx f1.txt
[root@study data]# setfacl -m g:wang:rwx f1.txt
[root@study data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:rwx
group::r--
group:wang:rwx
mask::rwx
other::r--

还需要注意的是有了+号就是acl 并且mask 代表 g

修改mask权限

[root@study data]# chmod g=rw f1.txt
[root@study data]# getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw-
user:wang:rwx                   #effective:rw-
group::r--
group:wang:rwx                  #effective:rw-
mask::rw-

 #effective:rw- 就是限高杆

 备份和还原ACL

 运用到之前的赋值

之前
[root@study data]# chmod -R mysql.mysql /usr/local/mysql/
之后
[root@study data]# setfacl -Rm u:mysql:rwx /usr/local/mysql/
使用acl可以撤销
[root@study data]# setfacl -Rb /usr/local/mysql/

chmod 执行权限被去掉了怎么办!(曲线救国)

环境配置

[root@study data]# which chmod
/usr/bin/chmod
[root@study data]# ll /usr/bin/chmod
-rwxr-xr-x. 1 root root 58592 Aug 20  2019 /usr/bin/chmod
[root@study data]# chmod -x /usr/bin/chmod
[root@study data]# ll /usr/bin/chmod
-rw-r--r--. 1 root root 58592 Aug 20  2019 /usr/bin/chmod
[root@study data]# touch f2.txt
[root@study data]# chmod a=rwx f2.txt
-bash: /usr/bin/chmod: Permission denied

 解决方案

[root@study data]# setfacl -m u:root:rwx /usr/bin/chmod
[root@study data]# chmod +x /usr/bin/chmod
[root@study data]# ll /usr/bin/chmod
-rwxrwxr-x+ 1 root root 58592 Aug 20  2019 /usr/bin/chmod
[root@study data]# setfacl -b  /usr/bin/chmod
[root@study data]# ll  /usr/bin/chmod
-rwxr--r-x. 1 root root 58592 Aug 20  2019 /usr/bin/chmod
[root@study data]# chmod g+x  /usr/bin/chmod
[root@study data]# ll  /usr/bin/chmod
-rwxr-xr-x. 1 root root 58592 Aug 20  2019 /usr/bin/chmod

参考文献

4文件特殊属性和FACL实现灵活的权限控制_哔哩哔哩_bilibili

总结

所有命令都需要反复敲来实验来记忆,本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。

上一篇:在Photoshop中填充图层颜色