• 12.su 命令与sudo 服务


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

      比如从root 管理员切换至普通用户:  

    [root@Centos test]# id
    uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [root@Centos test]# su - centos
    Last login: Fri Aug 14 18:37:52 CST 2020 on pts/2
    [centos@Centos ~]$ id
    uid=1112(centos) gid=1113(centos) groups=1113(centos) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

      su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。

      当从root 管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证了。  

    [centos@Centos ~]$ su root
    Password: 
    [centos@Centos ~]$ exit
    logout
    [root@Centos test]# su - centos
    Last login: Fri Aug 14 18:44:20 CST 2020 on pts/2

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

      sudo 服务的配置原则:在保证普通用户完成相应工作的前提下,尽可能少地赋予额外的权限。  

         

    [centos@Centos ~]$ sudo -l
    [sudo] password for centos: 
    Sorry, user centos may not run sudo on Centos.

      sudo 命令具有如下功能:

        限制用户执行指定的命令:记录用户执行的每一条命令;

        配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;

        验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。

      如果担心直接修改配置文件会出现问题,则可以使用sudo 命令提供的visudo 命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改sudoers 配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。

      注:只有 root 管理员才可以使用visudo 命令编辑sudo 服务的配置文件。  

      使用 visudo 命令配置sudo 命令的配置文件时,其操作方法与Vim 编辑器中用到的方法一致。

      在sudo 命令的配置文件中,按照下面的格式将第90行(大约)填写上指定的信息:谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表  

    [root@Centos test]# visudo
    90 ##
    91 ## Allow root to run any commands anywhere
    92 root    ALL=(ALL)       ALL
    93 centos ALL=(ALL) ALL

      在填写完毕后记得要先保存再退出,然后切换至指定的普通用户身份,此时就可以用sudo-l 命令查看到所有可执行的命令了(下面的命令中,验证的是该普通用户的密码,而不是root管理员的密码):  

    [centos@Centos ~]$ sudo -l
    [sudo] password for centos: 
    Matching Defaults entries for centos on Centos:
        !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME
        HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
        LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
        _XKB_CHARSET XAUTHORITY", secure_path=/sbin:/bin:/usr/sbin:/usr/bin
    
    User centos may run the following commands on Centos:
        (ALL) ALL

      测试:    

    [root@Centos ~]# su - centos
    Last login: Mon Aug 17 11:46:10 CST 2020 on pts/2
    [centos@Centos ~]$ ls /root
    -bash: cd: /root: Permission denied
    [centos@Centos ~]$ 
    [centos@Centos ~]$ sudo ls /root
    [sudo] password for centos: 
    [centos@Centos ~]$ sudo ls /root

    anaconda-ks.cfg Documents findresults Music Public test

    Desktop Downloads initial-setup-ks.cfg Pictures Templates Videos 
    一般只能赋予普通用户具体的命令以满足工作需求,这也受到了必要的权限约束。如果需要让某个用户只能使用root 管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。我们可以先使用whereis 命令找出命令所对应的保存路径。
    举例:
    [centos@Centos ~]$ exit
    logout
    [root@Centos ~]# whereis cat
    cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
    [root@Centos ~]# visudo
    91 ## Allow root to run any commands anywhere
    92 root    ALL=(ALL) ALL
    93 centos ALL=(ALL)  /usr/bin/cat
    
    [root@Centos ~]# su - centos
    Last login: Mon Aug 17 11:52:33 CST 2020 on pts/2
    [centos@Centos ~]$ cat /etc/shadow
    cat: /etc/shadow: Permission denied
    [centos@Centos ~]$ sudo cat /etc/shadow
    [sudo] password for centos: 
    root:$6$FItCpf70$FV4ZEntlsWO5jNif2Ndi8cbZWOqRYy

      取消密码验证:添加NOPASSWD

    [root@Centos ~]# whereis cat
    cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
    [root@Centos ~]# 
    [root@Centos ~]# visudo
    ## Allow root to run any commands anywhere
    root    ALL=(ALL) ALL
    centos ALL=NOPASSWD:  /usr/bin/cat
    
    
  • 相关阅读:
    极客时间趣谈网络协议第一模块 通信协议综述 总结
    acl
    go context 梳理
    go sync 包梳理
    SQL优化
    .NET 6 支持的Windows 版本
    SQL Group By 和 Having 的区别
    SQLServer select语句执行流程
    NSwag, Swagger 调试 404
    转载: 数据库相关知识,理论及优化
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/13517627.html
Copyright © 2020-2023  润新知