sudo

Posted shenxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sudo相关的知识,希望对你有一定的参考价值。

sudo

    来自sudo包 
    man 5 sudoers
    sudo能够授权指定用户在指定主机上运行某些命令,如果未授权用户用尝试使用 sudo ,会提示联系管理员。
    sudo可以提供日志,记录每个用户使用sudo 操作
    sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
    sudo使用时间戳文件来完成类似“检票”的 系统,默认存活期为5分钟的 “入场券”
    
    通过visudo 命令编辑配置文件,具有语法检查功能
        visudo –c  检查语法
    配置文件:
        /etc/sudoers, /etc/sudoers.d/
    时间戳文件:
        /var/db/sudo
    日志文件:
        /var/log/secure
    配置文件支持使用通配符glob: 
        ?:  任意单一字符
        *  :    匹配任意长度字符
        [wxc]:  匹配其中一个字符
        [!wxc]:     除了这三个字符的其它字符
        \x :    转义
        [[alpha]] :     字母,示例: /bin/ls [[alpha]]*
    配置文件规则有两类:
        1 、别名定义: 不是必须的
        2 、授权规则: 必须的

sudoers

    授权规则格式:
        用户 登入的主机=( 代表用户)  命令
        user host=(runas)command
    示例:
        root ALL=(ALL)   ALL
    格式说明:
        user:  运行命令者的身份
        host:  通过哪些主机
        (runas) :以哪个用户的身份
        command:  运行哪些命令

别名

    Users 和runas:
        username
        #uid
        %group_name
        %#gid
        user_alias|runas_alias
    host:
        ip 或hostname
        network(/netmask)
        host_alias
    command:
        command name
        directory
        sudoedit
        Cmnd_Alias

sudo 别名

    别名有四种类型:User_Alias, Runas_Alias, Host_Alias,Cmnd_Alias
    别名格式:[A-Z]([A-Z][0-9]_)*
    别名定义:
        Alias_Type NAME1 = item1, item2, item3 : NAME2 =item4, item5

示例

    示例1:
        Student ALL=(ALL) ALL
        %wheel ALL=(ALL) ALL
    示例2: 
        student ALL=(root) /sbin/pidof,/sbin/ifconfig
        %wheel ALL=(ALL) NOPASSWD: ALL
    示例3
        User_Alias NETADMIN= netuser1,netuser2
        Cmnd_Alias NETCMD = /usr/sbin/ip
        NETADMIN ALL= (root)NETCMD
    示例4
        User_Alias SYSADER=wang,mage,%admins
        User_Alias DISKADER=tom
        Host_Alias SERS=www.magedu.com,172.16.0.0/24
        Runas_Alias OP=root
        Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod
        Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk
        SYSADER SERS= SYDCMD,DSKCMD
        DISKADER ALL=(OP) DSKCMD
    示例5
        User_Alias ADMINUSER = adminuser1,adminuser2
        Cmnd_Alias ADMINCMD = /usr/sbin/useradd,/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
        ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel
    示例6
        Defaults:wang runas_default=tom
        wang ALL=(tom,jerry) ALL
    示例7
        wang 192.168.175.136,192.168.175.138=(root)
        /usr/sbin/,!/usr/sbin/useradd
    
    示例8
        wang ALL=(ALL) /bin/cat /var/log/messages*

visudo命令

    visudo - safely edit the sudoers file
    visudo [-chqsV] [-f sudoers] [-x output_file]
    Options:
        -c, --check                 仅检查模式
        -f, --file=sudoers          指定的sudoers文件定位
        -h, --help                  帮助信息
        -q, --quiet                 少量语法错误信息
        -s, --strict                严格语法检查
        -V, --version               显示版本信息
        -x, --export=output_file    采用JSON格式写sudoers到指定输出文件

sudo 命令

    ls -l /usr/bin/sudo
    sudo –i –u wang  切换身份
    
    sudo - execute a command as another user
    sudo -h | -K | -k | -V
    sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
    sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
    sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
    sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file
    Options:
        -A, --askpass                   为密码提示使用帮助项目
        -b, --background                在后台运行命令
        -C, --close-from=num            关闭所有文件描述符 >= num
        -E, --preserve-env              当运行命令时保护用户环境
        -e, --edit                   编辑文件来取代运行的命令
        -g, --group=group               以指定的组名或组id来运行命令
        -H, --set-home                  给目标用户的家目录设置HOME 变量
        -h, --help                      显示帮助
        -h, --host=host                 在主机上运行命令 (if supported by plugin)
        -i, --login                  使用目标用户运行登陆shell环境,也可指定运行命令
        -K, --remove-timestamp          完全移除时间戳文件
        -k, --reset-timestamp           使时间戳文件失效
        -l, --list                      列出用户的特权或检查指定的命令
        -n, --non-interactive           non-interactive 模式, 不使用提示
        -P, --preserve-groups           保存组本身的取代设置给目标的
        -p, --prompt=prompt         使用指定的密码提示
        -r, --role=role                 使用指定的角色来创建SELinux指定的安全上下文内容
        -S, --stdin                     从标准输入中读取命令
        -s, --shell                     使用指定的用户运行shell环境,同时可以指定命令
        -t, --type=type                 使用指定的类型创建 SELinux安全上下文
        -U, --other-user=user           采用列表模式,显示用户的特权
        -u, --user=user                 以指定用户或id运行命令或编辑文件
        -V, --version                   显示版本信息
        -v, --validate                  在不运行命令的情况下,更新用户的时间戳
        --                              停止处理命令行参数

    
    sudo [-u user] COMMAND
        -V  显示版本信息等配置信息
        -u  user 默认为root
        -l,ll   列出用户在主机上可用的和被禁止的命令
        -v  再延长 密码有效期限5 分钟, 更新时间戳
        -k  清除时间戳(1970-01-01),下次需要重新输密码
        -K  与-k 类似,还要删除 时间戳文件
        -b  在后台执行指令
        -p  改变询问密码的提示符号
        示例:-p ”password on %h for user %p:"

以上是关于sudo的主要内容,如果未能解决你的问题,请参考以下文章

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数