关于linux:Linux基础篇12小白如何学习Linux权限管理之文件权限

41次阅读

共计 5866 个字符,预计需要花费 15 分钟才能阅读完成。

前言小文章
《其实你离胜利只差 3 厘米》
每个人的人生都渴望胜利 而胜利的经验往往都要经验一段熬的过程 别离只是熬的长短 更有甚者是有的人熬过去了 有的人在半路倒下了。当你含辛茹苦实现了一个我的项目 一个人生的小指标的时候 反过头来 你会发现 其实所有不过是一场厚积薄发的过程而已。
人这辈子 谁不得有那么几回被苦难教做人。
那种被生存一巴掌连着一巴掌呼得满地找牙的感觉特地不好 然而你要记得:无论境况多蹩脚 只有不认怂 生存就没方法撂倒你。
再艰巨的窘境
走上来就是柳暗花明
要害是 你要挺住 不要停!

权限治理 - 文件权限
把一个用户退出了一个组 该用户就领有了该组的权限 当一个用户要操作某个文件时 零碎会顺次检索该用户是否是该文件的拥有者 其次是组成员 最初是其他人 如果扫描到是拥有者 则具备拥有者的权限 不用往后扫描 以此类推

一 文件权限治理之根本权限
1.1 根本权限介绍
根本权限类型

r:可读 =》4
w:可写 =》2
x:可执行 =》1
权限的归属

属主:u
属组:g
其他人:o
例如
[root@aliyun ~]# ls -l a.txt
-rw-r–r– 1 root root 1146 Jul 16 18:42 a.txt

文件类型:
-:文本文档
d:目录
b:设施 block
c:字符设施
s:套接字文件
l:软链接

权限

硬链接个数

属主

属组

文件所占用的空间(以字节为单位)

文件(目录)最近拜访(批改)工夫

文件名

1.2 设置权限
批改属主、属组
[root@aliyun ~]# chown alice.hr file1 # 改属主、属组
[root@aliyun ~]# chown alice file1 # 只改属主
[root@aliyun ~]# chown .hr file1 # 只改属组

[root@aliyun ~]# chown -R /test # 递归批改
批改 u、g、o 对应的权限
加减法
chmod u+x,g-w,o+r a.txt
赋值
chmod a=rwx a.txt
chmod a=- a.txt
chmod ug=rw,o=r file1

数字
chmod 644 file1

chmod -R 777 xxx/
留神:把某一个非属主用户增加到文件的属组里,他就领有了该组的权限,而不再是其他人

1.3 权限对文件 or 目录的意义
文件:ls -l 文件名

r:能够 cat 读取文件内容
w:能够批改文件
x:能够执行文件代码,如果该文件的代码是编译好的后果,那么只有 x 权限即可执行,但如果该文件的代码是一个解释型的脚本程序,则须要配合 r 权限才可执行
目录:ls -dl 文件名

r:能够 ls 浏览文件下的内容
w:能够在目录下创立新文件 or 目录
x:
能够执行目录下的程序,除了对目录有执行权限外,还要对程序文件有执行权限才行。
能够失常切换到目录下
波及到多层目录如 /a/b/c,须要对每一级都有 x 权限才能够失常走到下一级
一:对文件夹的操作(不操作文件内容),须要以后用户具备的权限
1、对沿途所有文件夹有 x 权限
2、对指标文件夹有 r 或 w 权限
r-》能够浏览
w-》能够创立、删除、挪动子文件和子目录

二:对文件的操作(操作文件内容),须要以后用户具备的权限
1、对沿途所有文件夹有 x 权限
2、对指标文件有 r 或 w 权限
r-》能够读取文件内容
w-》能够批改文件内容

!!!留神!!!
储备常识:vim 批改的原理是将源文件删掉,而后再将内容的内容笼罩写入了新文件,新文件名重命名为原文件名
例子:
1、以后用户对沿途所有文件夹都有 x 权限
2、并且以后用户对指标文件夹有 w 权限
3、然而以后用户对指标文件没有 w 权限
此时以后用能够 vim 编辑文件内容,并且能够 wq! 强制保留退出实现文件批改,其实是将源文件删掉了,能够通过查看前后操作的文件 inode 号来确定

例 1:要想在目录下创立 \ 删除内容:对目录的 x 权限 + 对目录的 w 权限
1、设置权限
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a # 其他人 o 对当前目录及其子目录都有 x 权限
[root@aliyun ~]# chmod o+w /a/b/c # 其他人 o 对 /a/b/ c 目录有 w 权限

2、查看权限
[root@aliyun ~]# ls -dl /a
drwxr-x–x 3 root root 4096 Aug 11 16:24 /a
[root@aliyun ~]# ls -dl /a/b
drwxr-x–x 3 root root 4096 Aug 11 16:24 /a/b
[root@aliyun ~]# ls -dl /a/b/c
drwxr-x-wx 2 root root 4096 Aug 11 16:25 /a/b/c

3、验证
[root@aliyun ~]#
[root@aliyun ~]# su – gg
Last login: Tue Aug 11 16:17:28 CST 2020 on pts/2
[gg@aliyun ~]$ touch /a/b/c/1.txt
[gg@aliyun ~]$ exit www.24shopol.com
logout
[root@aliyun ~]# ls /a/b//c/
1.txt

例 2:要浏览目录下内容:对目录的 x 权限 + 对目录的 r 权限
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a
[root@aliyun ~]# chmod o+r /a/b/c
[root@aliyun ~]#
[root@aliyun ~]# touch /a/b/c/{1..3}.txt
[root@aliyun ~]#
[root@aliyun ~]# su – gg
Last login: Tue Aug 11 16:27:33 CST 2020 on pts/2
[gg@aliyun ~]$ ls /a/b/c
1.txt 2.txt 3.txt

例 3:要执行目录下程序:对目录的 x 权限 + 对文件的 x 权限,如果文件是解释型语言的脚本程序,还须要对文件有 r 权限
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a/b/c
[root@aliyun ~]# cp /bin/echo /a/b/c
[root@aliyun ~]# chmod o=x /a/b/c/echo
[root@aliyun ~]#
[root@aliyun ~]# su – gg
Last login: Tue Aug 11 16:30:17 CST 2020 on pts/2
[gg@aliyun ~]$ /a/b/c/echo “hello fly”
hello fly

二 文件权限治理之非凡权限
2.1 SUID
普通用户不是 root 也不属于 root 组,于是它对 /etc/shadow 文件没有任何权限
[root@aliyun ~]# ll /etc/shadow
———- 1 root root 1109 Aug 11 16:11 /etc/shadow
然而普通用户却能够用 passwd 命令批改明码,而批改明码都是在批改 /etc/shadow 文件,如何实现的???
[root@aliyun ~]# ll which passwd
-rwsr-xr-x 1 root root 27856 Aug 9 2019 /bin/passwd
能够看到一个 s 权限,s 权限的非凡之处

SUID 权限仅对二进制可执行文件无效
如果执行者对于该二进制可执行文件具备 x 的权限,执行者将具备该文件的所有者的权限
本权限仅在执行该二进制可执行文件的过程中无效
示例
[root@localhost ~]# ll which cat
-rwxr-xr-x. 1 root root 54160 10 月 31 2018 /usr/bin/cat
[root@localhost ~]# chmod 4755 which cat # 或者 chmod u+s which cat
[root@localhost ~]# ll which cat
-rwsr-xr-x. 1 root root 54160 10 月 31 2018 /usr/bin/cat

[root@localhost ~]# su – egon
[egon@localhost ~]$ cat /etc/shadow # 能够看到内容

理解:
1、在没有设置 suid 的状况下,咱们登录了一个用户,来执行操作指标文件的命令
会顺次比对以后登录用户是否是指标文件的属主、属组、其他人来确定是否领有操作权限

2、在设置了 suid 的状况下,咱们登录了一个用户,来执行操作指标文件的命令
以后用户会转换成命令文件的属主身份,而后拿着该身份去对应指标文件,如果该身份不是指标文件的客人,那么就间接被归为其他人一栏,不会检索组
sgid 一样


筹备
mkdir /test
chmod 777 /test/
echo 1111 > /test/a.txt
chmod 000 /test/a.txt
chown user1.group1 /test/a.txt
chown egon.devops /usr/bin/cat
chmod u+s /usr/bin/cat

试验
[root@egon ~]# ll /test/a.txt # 指标文件的属主:user1,属组:group1
———-. 1 user1 group1 4 10 月 29 18:31 /test/a.txt
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# ll /usr/bin/cat # 命令文件的属主:fly
-rwxr-xr-x. 1 egon devops 54160 10 月 31 2018 /usr/bin/cat
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# su – lili -c “cat /test/a.txt” # lili 切换为 fly 用户执行,fly 用户没有对上 a.txt 的属主,所以间接被当成其他人,没有任何权限
cat: /test/a.txt: 权限不够
[root@fly ~]# chmod o+r /test/a.txt
[root@fly ~]# su – lili -c “cat /test/a.txt”
111
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# chmod o-r,g+r /test/a.txt
[root@fly ~]# ll /test/a.txt
—-r—–. 1 user1 group1 4 10 月 29 18:31 /test/a.txt
[root@fly ~]# usermod -a -G group1 egon
[root@fly ~]# ll /usr/bin/cat # 确保 suid 还在
-rwsr-xr-x. 1 fly devops 54160 10 月 31 2018 /usr/bin/cat
[root@fly ~]# id fly
uid=1005(fly) gid=1005(fly) 组 =1005(fly),1003(group1)
[root@fly ~]#
[root@fly ~]# su – lili -c “cat /test/a.txt” # lili—>fly,fly 用户没有对上 a.txt 的属主,所以间接被当成其他人,尽管此时 egon 属于文件 a.txt 的属组 group1 的成员,然而对 suid 来说那没用
cat: /test/a.txt: 权限不够
[root@fly ~]#

[root@fly ~]# su – fly -c “cat /test/a.txt” # 如果以后用户与 suid 的用户重叠,那么就无所谓用户转换,同样会依照:属主、属组、其他人的秩序顺次对照
1111

留神:
sgid 规定同 suid
同时设置 suid 与 sgid 的状况下,suid 优先级高于 sguid

2.2 SGID
当 SGID 作用于一般文件时,和 SUID 相似,在执行该文件时,用户将取得该文件所属组的权限。

当 SGID 作用于目录时,意义就十分重大了:
当一个用户对某一目录有写和执行权限时,该用户就能够在该目录下建设文件
如果该目录同时用 SGID 润饰,则该用户在这个目录下建设的文件都是属于这个目录所属的组
[root@localhost ~]# mkdir /test
[root@localhost ~]# chmod g+s /test/ # 等同于 chmod 2755 /test/
[root@localhost ~]# ll -dl /test/
drwxr-sr-x 2 root root 6 8 月 11 17:06 /test/
[root@localhost ~]#
[root@localhost ~]# chown .fly /test/ # 前期任何人在该目录下创立的文件 or 目录的属组都是 fly
2.3 SBIT
其实 SBIT 与 SUID 和 SGID 的关系并不大。
SBIT 是 the restricted deletion flag or sticky bit 的简称,有时也称为 Sticky
SBIT 目前只对目录无效,用来阻止非文件的所有者删除文件。比拟常见的例子就是 /tmp 目录:
[root@localhost ~]# ls -dl /tmp/
drwxrwxrwt. 13 root root 4096 8 月 11 17:09 /tmp/
[root@localhost ~]# chmod o+t /test/ # 或者 chmod 1755 /test
权限信息中最初一位 t 表明该目录被设置了 SBIT 权限。SBIT 对目录的作用是:当用户在该目录下创立新文件或目录时,仅有本人和 root 才有势力删除,次要作用于一个共享的文件夹。

三 文件权限治理之 umask
新建文件、目录的默认权限是由 umask 决定的

1、uid>199 并且属主与数组相等的用户下,umask: 0002

文件 664
目录 775
2、除 1 之外的其余用户下,比方 root 用户,umask: 0022

文件 644
目录 755
inux 中文件默认权限为 666、目录权限默认为 777,在 umask 的影响下
文件权限计算方法:偶数位间接相减,奇数位相减后加 1

文件的起始权限值 umask 值 操作 计算后文件权限
666 022 (每位如果都是偶数) 间接相减即可 644
666 033 (每位如果有奇数或偶数 相减(奇数位相减后在其原奇数位加 1 644
666 325(每位如果有奇数或偶数) 相减(奇数位相减后在其原奇数位加 1)442
目录权限计算方法:间接相减即可

文件的起始权限值 umask 值 操作 计算后文件权限
777 022 相减 755
777 033 相减 744
777 325 相减 452
总结:umask 设置的越小,权限越大,慎用

长期设置 umask
[root@localhost ~]# umask 000 // 设置 umask 权限
永恒设置 umask
[root@localhost tmp]# vim /etc/profile # 或者 /etc/bashrc 内容一样
……
if [$UID -gt 199] && [“id -gn” = “id -un”]; then
umask 002 // 示意 uid 大于等于 199 的默认 umask 值,示意普通用户
else
umask 022 // 示意 uid 小于 199 的默认 umask 值,示意 root

正文完
 0