-linux-权限管理-文件权限
-linux-权限管理-⽂件权限
把⼀个⽤户加⼊了⼀个组,该⽤户就拥有了该组的权限,当⼀个⽤户要操作某个⽂件时,系统会⼀次检索该⽤户是否是该⽂件的拥有者,其次是组成员,最后是其他⼈,如果扫描到是拥有者,其次是组成员,最后是其他⼈,如果扫描到是拥有者,则具备拥有者的权限,不必往后扫描,以此类推。
⼀⽂件权限管理:基本权限
1 基本权限介绍
基本权限类型
r: 可读 ===》4
w: 可写 ===》2
x: 可执⾏ ==》1
权限的归属
属主:u
属组:g
其他⼈:o
例如
[user10@arther-linux /]$ ls -
-rw-r-----. 1 root root 186 Nov 23 17:
⽂件类型:
-:⽂本⽂档
d:⽬录
b:设备block
c:字符设备
s:套接字⽂件
l:软链接
权限:染衣服
硬链接个数
属主
属组
⽂件所占⽤的空间(以字节为单位)
⽂件(⽬录)最近访问(修改)时间
⽂件名
2 设置权限
行政管理就业前景修改属主、属组
[root@arther-linux /]# ls -
-
rw-r-----. 1 root root 186 Nov 23 17:
[root@arther-linux /]# chown bibibi.
[root@arther-linux /]# ls -
-rw-r-----. 1 bibibi user10 186 Nov 23 17:
# 同时改了属主与属组
[root@arther-linux /]# chown
[root@arther-linux /]# ls -
-rw-r-----. 1 root user10 186 Nov 23 17:
# 只改了属主
[root@arther-linux /]# chown .
[root@arther-linux /]# ls -
-
rw-r-----. 1 root root 186 Nov 23 17:
# 只改了属组
修改属主(u)、属组(g)、其他(o)的权限
# 加减法
chmod u+x,g+w,o+
# 赋值
chmod a=
chmod a=- a.txt
chmod ug=rw,o=r file1
# 数字
chmod 644 file1
从前到后,每⼀位分别代表u、g、o,
所以每⼀位数都对应着该类别的权限,
如下图 664 则是
rw_r__r__
属主:可读可写
属组:只可读
其他:只可读
数字意义显⽰
0⽆权限_ _ _
1只有执⾏权限_ _ x
2只有写权限_ w _
3 = 1+2可写可执⾏_wx
4只能读r _ _
5 = 1+4可读可执⾏r _ x
6 = 2+4可读可写rw_
7 = 1+2+4可读可写可执⾏rwx
注意:把某⼀个⾮属主⽤户添加到⽂件的属组,他就拥有了该组的权限,⽽不再是其他⼈。
3 权限对⽂件or⽬录的意义
r: 可以cat读取⽂件内容
无人机驾驶证
w: 可以修改⽂件
x: 可以执⾏⽂件代码,如果该⽂件的代码是编译好的结果,那么只有x权限即可执⾏,但如果该⽂件的代码是⼀个解释型的脚本程序,则需要配合r权限才可执⾏(需要边读边编译)
⽬录:ls -dl ⽂件名
r: 可以ls浏览⽂件下的内容
w: 可以在⽬录下创建新⽂件or⽬录
x:
可以执⾏⽬录下的程序,除了对⽬录有执⾏权限外,还要对程序⽂件有执⾏权限才⾏。
可以正常切换到⽬录下
涉及到多层⽬录如/a/b/c,需要对每⼀级都有x权限才可以正常⾛到下⼀级
⼀:对⽂件夹的操作(不操作⽂件内容),需要当前⽤户具备的权限
1、对沿途所有⽂件夹有x权限
2、对⽬标⽂件夹有r或w权限
r-》可以浏览
w-》可以创建、删除、移动⼦⽂件和⼦⽬录
# 如取消了⽤户对a⽬录的执⾏权限,但可读可写
[bibibi@arther-linux /]$ ls /a/
ls: cannot access /: Permission denied
ls: cannot access /a/b: Permission denied
<  b
# 会提⽰不能深⼊进⾏其他操作,即进⼊⽂件夹进⾏写、读操作
[bibibi@arther-linux /]$ cd /a/
bash: cd: /a/: Permission denied
# 直接没有权限
# 所以读写操作的权限需要配合执⾏权限
⼆:对⽂件的操作(操作⽂件内容),需要当前⽤户具备的权限
1、对沿途所有⽂件夹有x权限
2、对⽬标⽂件有r或w权限
r-》可以读取⽂件内容
w-》可以修改⽂件内容
注意
储备知识:vim修改的原理是将源⽂件删掉,然后再将内容的内容覆盖写⼊了新⽂件,新⽂件名重命名为原⽂件名
例⼦:
1、当前⽤户对沿途所有⽂件夹都有x权限
2、并且当前⽤户对⽬标⽂件夹有w权限
3、但是当前⽤户对⽬标⽂件没有w权限
此时当前⽤可以vim编辑⽂件内容,并且可以wq!强制保存退出完成⽂件修改,其实是将源⽂件删掉了,可以通过查看前后操作的⽂件inode号来确定
例1:要想在⽬录下创建\删除内容:对⽬录的x权限+对⽬录的w权限
1.设置权限
[root@arther-linux ~]# chmod 777 /a/
2.切换其他⽤户
[bibibi@arther-linux ~]$ cd /a/
[bibibi@arther-linux a]$ cd /a/b/
-bash: cd: /a/b/: Permission denied # 没有使⽤递归,a下的b⽬录不能执⾏⽆法cd
# 此时在a⽬录下有了wx的权限,可以近些删除或创建操作
3.验证
[bibibi@arther-linux a]$ ls
<  b
[bibibi@arther-linux a]$
[bibibi@arther-linux a]$ ls
b
'''
所以在⽬录下进⾏读写操作需要配合x的执⾏权限,
也就是能cd到该⽬录下的权限,然后如果有r的权限即可ls,
如果是w的权限,即可rm删除或touch,mkdir创建。
'''
河北服装批发例2:要执⾏⽬录下程序:对⽬录的x权限+对⽂件的x权限,如果⽂件是解释型语⾔的脚本程序,还需要对⽂件有r权限
# 保险起见,递归设置可读可执⾏
[root@arther-linux ~]# chmod  -R 775 /a/
[root@arther-linux ~]# ls -dl /a/b/c
drwxrwxr-x. 2 root root 4096 Nov 25 17:54 /a/b/c
[root@arther-linux ~]# ls -l /a/b/c/echo
-rwxrwxr-x. 1 root root 33088 Nov 25 17:54 /a/b/c/echo
# 其他⽤户顺利打印出来
[bibibi@arther-linux ~]$ /a/b/c/echo "hello egon"
hello egon
# 设置只可执⾏
[root@arther-linux ~]# chmod -R 771 /a/
[bibibi@arther-linux ~]$ /a/b/c/echo "hello egon"
hello egon # 当⽂件此时是解释性语⾔脚本则会权限不够,因为解释性语⾔需要边读边编译
⼆⽂件权限管理:特殊权限
1 SUID
普通⽤户不是root也不属于root组,于是它对/etc/shadow⽂件没有任何权限
[bibibi@arther-linux ~]$ ls -l /etc/shadow
----------. 1 root root 1592 Nov 25 10:25 /etc/shadow
但是普通⽤户却可以⽤passwd命令修改密码,⽽修改密码都是在修改/etc/shadow⽂件,那不相当于是在没有修改权限的情况下,修改了该⽂件,如何实现的
[root@arther-linux ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd
可以看出在属主上多了⼀个s权限
SUID权限仅对⼆进制可执⾏⽂件有效
如果执⾏者对于该⼆进制可执⾏⽂件具有x的权限,执⾏者将具有该⽂件的所有者的权限
本权限仅在执⾏该⼆进制可执⾏⽂件的过程中有效
[root@arther-linux ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd
# s 权限让我们临时passwd⽂件的属主权限,⽽这个属主权限则是root最⾼权限,即拥有了对/etc/shadow⽂件的root权限,所以可以通过passwd命令去执⾏在/etc/shadow修改密码的功能,前提是passwd必须是⼆进制可执⾏⽂件。# 现在对 cat 命令添加s权限,这样普通⽤户可以通过cat命令去查看/etc/shadow⽂件
八十年代电影歌曲
[root@arther-linux ~]# ll `which cat`
-rwxr-xr-x. 1 root root 54080 Aug 20  2019 /bin/cat
[root@arther-linux ~]# chmod u+s `which cat`
[root@arther-linux ~]# ll `which cat`
-
rwsr-xr-x. 1 root root 54080 Aug 20  2019 /bin/cat
# s 权限添加完毕,试验普通⽤户
[root@arther-linux ~]# su - bibibi
Last login: Wed Nov 25 18:08:58 CST 2020 on pts/0
[bibibi@arther-linux ~]$ cat /etc/shadow # 此时执⾏者获得了所有者的权限
# 执⾏成功
了解
-1.在没有设置suid的情况下,我们登陆了⼀个⽤户,来执⾏操作⽬标⽂件的命令
# 会依次⽐对当前登录⽤户是否是⽬标⽂件的属主、属组、其他⼈来确定是否拥有操作权限
-2.在设置了suid的情况下,我们登录了⼀个⽤户,来执⾏操作⽬标⽂件的命令
# 当前⽤户会转换成命令⽂件的属主⾝份,然后拿着该⾝份去对应⽬标⽂件,如果该⾝份不是⽬标⽂件的主⼈,那么就直接被归为其他⼈⼀栏,即没有访问权限,不会检索组 sgid⼀样
例⼦
# 准备
mkdir /test
chmod 777 /test/
echo 1111 > /
chmod 000 /
up1 /
chown egon.devops /usr/bin/cat chmod u+s /usr/bin/cat
# 实验
[root@egon ~]# ll /
# ⽬标⽂件的属主:user1,属组:group1
-
---------. 1 user1 group1 4 10⽉ 29 18:31 /
[root@egon ~]#
[root@egon ~]# [root@egon ~]# ll /usr/bin/cat
# 命令⽂件的属主:egon
-rwxr-xr-x. 1 egon devops 54160 10⽉ 31 2018 /usr/bin/cat
[root@egon ~]#
[root@egon ~]#
[root@egon ~]# su - lili -c "cat /" # lili切换为egon⽤户执⾏,egon⽤户没有对上a.txt的属主,所以直接被当成其他⼈,没有任何权限
cat: /: 权限不够
[root@egon ~]# chmod o+r /
[root@egon ~]# su - lili -c "cat /" 111
[root@egon ~]#
[root@egon ~]#
[root@egon ~]# chmod o-r,g+r /
[root@egon ~]# ll / ----r-----. 1 user1 group1 4 10⽉ 29 18:31 /
[root@egon ~]# usermod -a -G group1 egon
[root@egon ~]# ll /usr/bin/cat # 确保suid还在
-rwsr-xr-x. 1 egon devops 54160 10⽉ 31 2018 /usr/bin/cat
[root@egon ~]# id egon
uid=1005(egon) gid=1005(egon) 组=1005(egon),1003(group1)
[root@egon ~]#
[root@egon ~]# su - lili -c "cat /" # lili--->egon,egon⽤户没有对上 a.txt的属主,所以直接被当成其他⼈,虽然此时egon属于⽂件a.txt的属组group1的成员,但是对suid来说那没⽤
cat: /: 权限不够
[root@egon ~]#
[root@egon ~]# su - egon -c "cat /"
# 如果当前⽤户与suid的⽤户重叠,那么就⽆所谓⽤户转换,同样会按照:属主、属组、其他⼈的次序依次对照 1111
# 注意:
sgid规则同suid
同时设置suid与sgid的情况下,suid优先级⾼于sguid
2 SGID
当SGID作⽤于普通⽂件时,和SUID类似,在执⾏该⽂件时,⽤户将获得该⽂件所属组的权限。
当SGID作⽤于⽬录时,意义就⾮常重⼤了:
当⼀个⽤户对某⼀⽬录有写和执⾏权限时,该⽤户就可以在该⽬录下建⽴⽂件
如果该⽬录同时⽤ SGID 修饰,则该⽤户在这个⽬录下建⽴的⽂件都是属于这个⽬录所属的组。
[root@arther-linux /]# mkdir /test/
[root@arther-linux /]# chmod g+s /test/
[root@arther-linux /]# ls -dl test/
drwxr-sr-x. 2 root root 4096 Nov 25 19:58 test/
[root@arther-linux /]# ls -dl /test/
[root@arther-linux test]# chown user10.user10 /test/
drwxr-sr-x. 3 user10 user10 4096 Nov 25 20:07 /test/
#然后再在该⽬录下创建⽂件夹或是⽂件都继承了该⽬录的属组
[root@arther-linux test]#
[root@arther-linux test]# mkdir arther
[root@arther-linux test]# ls
<  arther
[root@arther-linux test]# ll
total 4
-rw-r--r--. 1 root user10    0 Nov 25 20:
drwxr-sr-x. 2 root user10 4096 Nov 25 20:07 arther
# SGID的优先级⼤于创建⽂件或⽂件夹⽣成的默认属组
[bibibi@arther-linux test]$
[bibibi@arther-linux test]$ ls -
-rw-rw-r--. 1 bibibi user10 0 Nov 25 20:
3 SBIT
子公司和分公司的区别
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
[root@arther-linux /]# chmod o+t /test/
[root@arther-linux /]# ls -dl test/
drwxr-sr-t. 3 user10 user10 4096 Nov 25 20:07 test/
[root@arther-linux /]# chmod o+w /test/
[root@arther-linux /]# ls -dl test/
drwxr-srwt. 3 user10 user10 4096 Nov 25 20:07 test/
# 同时⾮⽤户可以进⾏修改操作
# ⾮⽤户不可删除
[bibibi@arther-linux /]$ rm -rf /test/
rm: cannot remove ‘/test/’: Permission denied
权限信息中最后⼀位 t 表明该⽬录被设置了 SBIT 权限。SBIT 对⽬录的作⽤是:当⽤户在该⽬录下创建新⽂件或⽬录时,仅有⾃⼰和 root 才有权⼒删除,主要作⽤于⼀个共享的⽂件夹。
三⽂件权限管理:umask
新建⽂件、⽬录的默认权限是由umask决定的
1、uid>199并且属主与属组相同的⽤户下,umask: 0002
⽂件 664
⽬录 775
2、除1之外的其他⽤户下,⽐如root⽤户,umask: 0022
⽂件 644
⽬录 755
linux中⽂件默认权限为666、⽬录权限默认为777,在umask的影响下
⽂件权限计算⽅法:偶数位直接相减,奇数位相减后加1
⽬录权限计算⽅法:直接相减即可
总结: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 fi

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。