zoukankan      html  css  js  c++  java
  • Linux权限管理 chattr命令、lsattr命令、sudo命令

    chattr命令

    chattr命令用来修改文件系统的权限属性

    chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。
    chatrr 命令格式如下:
    [root@localhost ~]# chattr [+-=] [选项] 文件或目录名

    选项:

     选项 选项说明

    +

    増加权限

    -

    删除权限

    =

    等于某权限

    i

    如果对文件设置属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;

    如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件

    a

    如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;

    如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件

    e

    Linux 中的绝大多数文件都默认拥有 e 属性,表示该文件是使用 ext 文件系统进行存储的,

    而且不能使用"chattr -e"命令取消 e 属性

    例如:

    1. 给文件赋予属性

    #建立测试文件
    [root@localhost ~]# touch ftest 
     
    #增加属性 
    [root@localhost ~]# chattr +i ftest
    
    #删除属性
    #被赋予i属性后,root不能删除
    [root@localhost ~]# rm -rf flest
    rm:无法删除"ftesr":不允许的操作
    
    #也不能修改文件中的数据 
    [root@localhost ~]# echo 111>>ftest
    -bash:ftest:权限不够

    2. 给目录赋予i属性

    #建立测试目录
    [root@localhost ~]# mkdir dtest
    
    #再建立一个测试文件abc
    [root@localhost dtest]# touch dtest/abc
    
    #给目录赋予i属性
    [root@localhost ~]# chattr +i dtest/
    
    #dtest目录不能新建文件
    [root@localhost ~]# cd dtest/
    [root@localhost dtest]# touch bed
    touch:无法创建"bcd":权限不够
    
    #但是可以修改文件内容
    [root@localhost dtest]# echo 11>>abc
    [root@localhost dtest]# cat abc
    11
    
    #不能删除
    [root@localhost dtest]# rm -rf abc
    rm:无法删除"abc":权限不够
    此时,flest 文件和 dtest 目录都变得非常强悍,即便你是 root 用户,也无法删除和修改它。若要更改或删除文件,也必须先去掉 i 属性才可以。命令如下:
    [root@localhost ~]# chattr -i ftest
    [root@localhost ~]# chattr -i dtest/
     在某个项目中,我们可以每天自动实现把服务器的日志备份到指定目录,备份目录可设置 a 属性,变为只可创建文件而不可删除。命令如下:
    #建立备份目录
    [root@localhost ~]# mkdir -p /back/log
    
    #赋予a属性
    [root@localhost ~]# chattr +a /back/log/
    
    #可以复制文件和新建文件到指定目录中
    [root@localhost ~]# cp /var/log/messages /back/log/
    
    #但是不允许删除
    [root@localhost ~]# rm -rf /back/log/messages
    rm:无法删除"/back/log/messages":不允许的操作
    说明:chattr 命令不宜对目录 /、/dev/、/tmp/、/var/ 等进行设置,严重者甚至容易导致系统无法启动。

    lsattr 命令

    命令格式:

    [root@localhost ~]# lsattr 选项 文件名 选项:

    选项:

    选项 选项说明

    -a

    显示所有文件和目录

    -d

    如果目标是目录,则仅列出目录本身的属性,而不会列出文件的属性

    例如:查看/back/log/目录,其拥有a和e属性

    [root@localhost ~]#lsattr -d /back/log/
    -----a------e- /back/log/

    sudo命令

    管理员作为特权用户,可授权普通用户协助完成日常管理。
    现在较为流行的工具是 sudo,几乎所有 Linux 都已默认安装。还要注意一点,我们在前面介绍的所有权限,比如普通权限、默认权限、ACL权限、特殊权限、文件系统属性权限等操作的对象都是文件和目录,但是 sudo 的操作对象是系统命令,也就是 root 把本来只能由超级用户执行的命令赋予普通用户执行。
    sudo 使用简单,管理员 root 使用 vi sudo 命令即可编辑其配置文件 /etc/sudoers 进行授权。命令如下:
    [root@localhost ~]# visudo
    …省略部分输出…
    root ALL=(ALL) ALL
    # %wheel ALL=(ALL) ALL

    这两行是系统为我们提供的模板,我们参照它写自己的就可以了 

    格式说明:

    root ALL=(ALL) ALL
    #用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
    #%wheel ALL=(ALL) ALL
    #%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

    参数的具体含义如下:

    用户名/组名:代表 root 给哪个用户或用户组赋予命令,注意组名加"%"。

    用户可以用指定的命令管理指定 IP 地址的服务器。如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,则不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何 IP 地址来管理当前服务器。

    可使用的身份:就是把来源用户切换成什么身份使用,(ALL) 代表可以切换成任意身份。这个字段可以省略。

    授权命令:代表 root 把什么命令授权给普通用户。默认是 ALL,代表任何命令,这当然不行,如果需要给哪个命令授权,则只需写入命令名即可。不过需要注意,一定要写绝对路径。

    授权用户 zhangsan 可以重启服务器

    由 root 用户添加,如下行:
    [root@localhost ~】# visudo
    zhangsan ALL=/sbin/shutdown -r now
    指定组名用百分号标记,如 %admgroup,多个授权命令之间用逗号分隔。用户 zhangsan 可以使用 sudo -l 查看授权的命令列表。
    #切换成zhangsan用户
    [root@localhost ~]# su - zhangsan
    
    #查看授权的命令列表
    [zhangsan@localhost ~]$ sudo -l
    
    #需要输入zhangsan用户的密码
    [sudo] password for zhangsan:
    User zhangsan may run the following commands on this host:
    (root) /sbin/shutdown -r now

    可以看到zhangsan 用户拥有了 shutdown -r now的权限

    提示输入密码为 zhangsan 普用户的密码,是为了验证操作服务器的用户是不是 zhangsan 用户本人。zhangsan 用户需要执行时,只需使用如下命令:
    [zhangsan@localhost ~]$ sudo /sbin/shutdown -r now

    zhangsan 用户即可以重启服务器。注意,命令写绝对路径,或者把 /sbin 路径导入普通用户 PATH 路径中,否则无法执行。

     
  • 相关阅读:
    <转>Npoi导入导出Excel操作<载>
    将DataTable导出为Excel C#
    错误 X “X1”不包含“XX2”的定义,并且找不到可接受类型为“X1”的第一个参数的扩展方法“XX2”(是否缺少 using 指令或程序集引用?)
    错误 1 未知的服务器标记“asp:ScriptManager”。
    分析器错误消息: 类型“test.test.testx”不明确: 它可能来自程序集“F: estProjectin est.test.DLL”或程序集“F: estProjectin estProject.DLL”。请在类型名称中显式指定程序集。
    There are no interfaces on which a capture can be done.
    基础知识系列☞GET和POST→及相关知识
    基础知识系列☞Abstract和Virtual→及相关知识
    同源策略
    26Mybatis_一级缓存及其测试
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9974538.html
Copyright © 2011-2022 走看看