权限管理-文件管理

内容概述

1.文件权限管理之基本权限
-1.1 基本权限介绍
-1.2 设置权限
-1.3 权限对文件或目录的意义
2.文件权限管理之特殊权限
-2.1 SUID
-2.2 SGID
-2.3 SBIT
3.文件权限管理之umask

内容详细

1.文件权限管理之基本权限

  • 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
文件类型:
    f:文本文档
    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/
ps:把某一个非属主用户添加到文件的属组里,他就拥有了该组的权限,而不再是其他人.
  • 1.3权限对文件或目录的意义

文件: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号来确定

例子一:要想在目录下创建\删除内容:对目录的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
logout
[root@aliyun ~]# ls /a/b//c/
1.txt

2.文件权限管理之特殊权限

  • 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  # 可以看到内容
  • 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 .egon /test/ # 后期任何人在该目录下创建的文件or目录的属组都是egon.
  • 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 才有权力删除,主要作用于一个共享的文件夹.

3.文件权限管理之umask

umask权限

	文件夹的权限默认是:777
	文件的权限默认是:666
	
	最终文件的权限:默认的文件权限 - umask权限 (遇到奇数则加1)
	最终文件夹得权限:默认的文件夹权限 - umask权限

	普通文件umask : 002
	超管文件umask : 022

	普通文件最终权限: 664
	超管文件最终权限: 644
	
	普通文件夹最终权限: 775
	超管文件夹最终权限: 755
总结:umask设置的越小,权限越大,慎用.
	例1:假设umask为345,请问创建的文件夹权限为多少,文件权限为多少?
        432    r---wx-w-  
        422	   r---w--w- 
	
	例2:假设umask为123,请问创建的文件夹权限为多少,文件权限为多少?
		664    654  rw-r-xr--
		644    644  rw-r--r--
# 永久设置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
# 上述表示式为一个简单的if判断,后边的shell编程会讲到...
posted @ 2021-07-26 20:45  堇雪月寒风  阅读(405)  评论(0)    收藏  举报
Live2D