zoukankan      html  css  js  c++  java
  • 18文件权限管理

    一. 文件权限概述

    尽管在Linxu系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分。

    -		普通文件
    d		目录文件
    l		链接文件
    b		块设备文件
    c		字符设备文件
    p		管道文件
    

    Linux 中规定义了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。

    对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。

    但是,对于目录文件来说,其权限设置就不那么容易了。

    可读		表示能够读取目录内的文件列表
    可写		表示能够在目录内新增、删除、重命名文件
    可执行		表示能够进入该目录
    
    [root@rockman 0620]# ls -l
    total 8
    #文件类型为:普通文件;所有者权限:读写执行;同组权限:读;其他人权限:读
    -rw-r--r--. 1 root root 28 Jun 20 09:32 atcopy.txt
    

    二. 文件的特殊权限

    主要包括SUID、SGID与SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。

    1. SUID

    SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属猪的权限。

    1. SGID

    SGID主要实现如下两种工能:

    让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);

    在某个目录中常见的文件自动继承该目录的用户组(只可以对目录进行设置);

    1. SBIT

    SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

    三. 文件的隐藏权限

    隐藏权限,指被隐藏起来的权限,默认情况下不能直接被用户发觉。(不是隐藏文件的权限!!!)

    1. chattr 命令

    chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。

    如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。

    chattr命令中可供选择的隐藏权限参数:

    i		无法对文件进行修改;若对目录设置了改参数,则仅能膝盖其中的子文件内容而不能新建或者删除文件
    a		仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
    S		文件内容在变更后立刻同步到硬盘(sync)
    s		彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘)
    A		不在修改这个文件或目录的最后访问时间(atime)
    b		不在修改文件或目录的存取时间
    D		检查压缩文件中的错误
    d		使用dump命令备份时忽略忽略本文件/目录
    c		默认将文件或者目录进行压缩
    u		当删除改文件后依然保留其在硬盘中的数据,方便日后恢复
    t		让文件系统支持尾部合并
    X		可以直接访问压缩文件中的内容
    
    #创建一个普通文件,可以直接删除掉
    [root@localhost 0623]# echo "for test file" > test.txt
    [root@localhost 0623]# rm test.txt
    rm: remove regular file ‘test.txt’? y
    [root@localhost 0623]# ls
    #创建一个普通文件,加上 a 隐藏属性(只允许追加),则无法删除
    [root@localhost 0623]# echo "for test file" > test.txt
    [root@localhost 0623]# chattr +a test.txt
    [root@localhost 0623]# rm test.txt
    rm: remove regular file ‘test.txt’? y
    rm: cannot remove ‘test.txt’: Operation not permitted
    #创建一个普通文件,移出 a 隐藏属性,则可以删除
    [root@localhost 0623]# chattr -a test.txt
    [root@localhost 0623]# rm test.txt
    rm: remove regular file ‘test.txt’? y
    [root@localhost 0623]# ls
    [root@localhost 0623]#
    
    1. lsattr 命令

    lsattr命令用于显示文件的隐藏属性,格式为“lsattr [参数] 文件”。Linux系统中,文件的隐藏权限必须使用lsattr命令查看,平时使用的ls之类的命令则看不出端倪。

    [root@localhost 0623]# ls -al test.txt
    -rw-r--r--. 1 root root 10 Jun 23 11:03 test.txt
    [root@localhost 0623]# chattr +a test.txt
    [root@localhost 0623]# lsattr -al test.txt
    test.txt                     Append_Only
    [root@localhost 0623]# lsattr test.txt
    -----a---------- test.txt
    [root@localhost 0623]#
    

    四. su命令与sudo 服务

    1. su 命令

    在学习中,使用root更加方便,但是在生产环境中还是要对安全多一份敬畏之心,不要用root管理员去做所有事情。因为一旦执行了错误的命令,可能会直接到时系统崩溃。

    尽管Linux系统为了安全考虑,使得许多系统命令和服务只能被root管理员使用,但是这也让普通用户受到了更多的权限束缚,从而导致无法顺利完成特定的工作任务。

    su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。

    [root@localhost 0623]# id
    uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    #su命令之后的减号(-),意味着完全切换到新用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。
    [root@localhost 0623]# su - hk
    Last login: Fri Jun  8 09:55:59 CST 2018 on tty1
    [hk@localhost ~]$ id
    uid=1000(hk) gid=1000(hk) groups=1000(hk) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [hk@localhost ~]$
    

    尽管像上面这样使用su命令之后,普通用户完全可以切换到root管理员身份来完成相应工作,但是这将暴露root管理员密码,从而增大了系统密码被黑客获取的几率,这病不是最安全的方案。

    1. sudo 服务

    sudo命令把特定命令的执行权限赋予给指定用户,这样既可以保证普通用户能够完成特定的工作,也可以皮面泄露root管理员密码。我们要做的就是合理配置sudo服务,以便兼顾系统的安全性和用户的便捷性。

    sudo 命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”。

    总的来说,sudo命令具有如下功能:
    限制用户执行指定的命令
    记录用户执行的每一条命令
    配置文件(/etc/sudoers)提供集中的用户管理、权限主机等参数
    验证密码后的5分钟内(默认值)无需再让用户再次验证密码
    

    当然,如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。

    道虽迩,不行不至;事虽小,不为不成。
  • 相关阅读:
    927小程序繁星计划峰会 · 看完这七大话题 你会更了解阿里小程序
    不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
    虽然他们说是水题,但我觉得思想蛮好的
    新学dfs(看懂了)
    01背包,死记硬背(我是真的蠢)
    装箱问题(太笨、还没想通)
    高精度乘法,string中的坑
    双十一用python秒杀京东好货!
    高精度减法用string 和 stack
    n阶汉诺塔 记住吧。。
  • 原文地址:https://www.cnblogs.com/rock-cc/p/9216841.html
Copyright © 2011-2022 走看看