• 权限管理-文件权限


    权限管理-文件权限

    把一个用户加入了一个组, 该用户就拥有了该组的权限, 当一个用户要操作某个文件时, 系统会依次检索该用户是否是该文件的拥有者, 其次是组成员, 最后是其他人, 如果扫描到是拥有者, 则具备拥有者的权限, 不必往后扫描, 以此类推

    一、文件权限管理之基本权限

      1.1基本权限介绍
              基本权限类型
    
    r: 可读=》4 w: 可写=》2 x: 可执行=》1
    权限的归属
    属 主 : u 属 组 : g 其他人: o
    
    
    例如
    命令# 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设置权限
    修改属主、属组

    命令# chown alice  .hr file1       #改属主、属组
    命令# chown alice  file1          #只改属主
    命令# chown .hr	 file1            #只改属组
    命令# 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权限对文件&目录的意义

    文件: ls -l 文件名
    r: 可以cat读取文件内容
    w: 可以修改文件
    x: 可以执行文件代码, 如果该文件的代码是编译好的结果, 那么只有x权限即可执行, 但如果该文件的代码是一个解释型的脚本程序, 则需要配合r权限才可执行
    
    
    目录: ls -dl 文件名
    r: 可以ls浏览文件下的内容
    w: 可以在目录下创建新文件or目录
    x:
    可以执行目录下的程序, 除了对目录有执行权限外, 还要对程序文件有执行权限才行。
    可以正常切换到目录下
    涉及到多层目录如/a/b/c , 需要对每一级都有x权限才可以正常走到下一级
    

    例1 : 要想在目录下创建删除内容: 对目录的x权限+对目录的w权限

    # 1、设置权限
    命令# mkdir -p /a/b/c
    命令# chmod  -R o=x /a	# 其他人o对当前目录及其子目录都有x权限
    命令# chmod o+w /a/b/c	# 其他人o对/a/b/c 目录有w权限
    
    # 2、查看权限
    命令# ls -dl /a
    drwxr-x--x 3 root root 409 6 Aug 11 16:24 /a
    命令# ls -dl /a/b
    drwxr-x--x 3 root root 409 6 Aug 11 16:24 /a/b
    命令# ls -dl /a/b/c
    drwxr-x-wx 2 root root 409 6 Aug 11 16:25 /a/b/c
    
    # 3、验证
    命令# su - gg
    last login: Tue Aug 11 16:17:28 CST 2020 on pts/2
    [ggaaliyun ~]$ touch /a/b/c/1 .txt
    [ggaaliyun ~]$ exit logout
    [rootaaliyun ~]# ls /a/b/ /c/
    1.txt
    
    

    例2: 要浏览目录下内容: 对目录的x权限+对目录的r权限

    命令# mkdir -p /a/b/c
    命令# chmod -R o=x /a
    命令# chmod o+r /a/b/c
    命令# touch /a/b/c/{1..3}.txt
    命令# 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权限

    命令# mkdir -p /a/b/c
    命令# chmod -R o=x /a/b/c
    命令# cp /bin/echo /a/b/c
    命令# chmod o=x /a/b/c/echo
    命令# su - gg
    Last login: Tue Aug 11 16:30:17 CST 2020 on pts/2
    [gg@aliyun ~]$ /a/b/c/echo "hello egon"
    hello egon
    

    二、文件权限管理之特殊权限

    详解:https://www.cnblogs.eom/linhaifeng/articles/13357542.html
    suid 4 sgid 2 sticky 1

    2.1SUID

    普通用户不是root也不属于root组,于是它对/etc/shadow文件没有任何权限
    命令# ll /etc/shadow
    -----------1 root root 1109 Aug 11 16:11 /etc/shadow
    但是普通用户却可以用passwd命令修改密码,而修改密码都是在修改/etc/shadow文件,如何实现 的???
    
    命令# ll 'which passwd'
    -rwsr-xr-x 1 root root 27856 Aug 9	2019 /bin/passwd
    可以看到一个s权限,s权限的特殊之处
    • SUID权限仅对二进制可执行文件有效
    •如果执行者对于该二进制可执行文件具有x的权限,执行者将具有该文件的所有者的权限
    •本权限仅在执行该二进制可执行文件的过程中有效
    
    示例
    命令# ll 'which cat'
    -rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
    命令# chmod 4755 'which cat' # 或者 chmod u+s 'which cat'
    命令# ll 'which cat'
    -rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
    命令# su 一 egon
    [egon@localhost ~]$ cat /etc/shadow # 可以看至 U内容
    

    2.2SGID

    •当S GID作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。
    •当SGID作用于目录时,意义就非常重大了:
    当一个用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件
    如果该目录同时用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。
    命令# mkdir /test
    命令# chmod g+s /test/ # 等同于 chmod 2755 /test/
    命令# ll -dl /test/
    drwxr-sr-x 2 root root 6 8月 11 17:06 /test/
    命令# chown .egon /test/ #后期任何人在该目录下创建的文件or目录的 属组都是egon
    

    2.3SBIT

    其实 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
    linux中文件默认权限为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
    命令# umask 000	//设置 umask 权限 
    永久设置umask
    
    命令# vim /etc/profile	#或者/etc/bashrc 内容一样
    ......
    if [ $uid -gt 199 ] && [ " `id -gn`" =  " `id  -un`"]; then   
    umask  002	//表示uid 大于等于199的默认umask 值, 表示普通用户
    else
    umask  022	//表示uid 小于199的默认umas 值,表示root
    fi
    
  • 相关阅读:
    动态加载方法(定时任务)
    安装 asp.net core 出错
    .NET:权限管理
    关于随机数
    博客园首弹
    C# MVC从其他系统获取文件流,显示文件
    Python中操作MySQL步骤
    MySql之_增删改查
    数据库之_SQL注入
    为什么上传到youtube上的视频很模糊
  • 原文地址:https://www.cnblogs.com/qiukangle/p/13974766.html
Copyright © 2020-2023  润新知