【Linux】sudo配置文件及相关命令

【Linux】sudo文件及相关配置

sudo意思是super-user do,让当前用户暂时以root的身份来执行命令
sudo默认配置文件是/etc/sudoers,一般使用Linux指定编辑工具visudo

  • su命令
    普通用户切换到root用户,使用su –或su root,必须输入root密码
    root用户切换到普通用户,使用su username,不需要输入密码
    # su
    切换到root,不切换环境
    Shell环境仍然是普通用户的Shell
    
    # su - root
    用户和Shell环境一起切换成root身份
    
    # su -c ls root
    切换用户执行命令,执行后返回原用户
    
    # su - root -c lastb
    不切换成 root,但是执行lastb命令
    
    -l 使得shell为可登录的shell
    -f 传递给shell(针对csh或tcsh)
    -m 不重置环境变量
    -p 与-m同
    -s 如果/etc/shells允许,运行SHELL.
    --help 显示帮助
    --version 输出版本信息并退出
    
    单一的 - 意味着-l.如果没有给定USER,则假定为root
    
  • visudo命令
    需要超级用户权限;默认编辑/etc/sudoers文件;
    sudoers文件的默认权限是440,默认无法修改;该命令可以在不更改sudoers文件权限的情况下,直接修改sudoers文件;
    # visudo
    编辑/etc/sudoers文件
    
    # visudo -c
    编辑/etc/sudoers文件,并检查语法等错误
    
    -c 纯检查模式
    -f 指定sudoers文件的位置
    -h 显示帮助信息
    -q 较简略的语法错误信息
    -s 严格语法检查
    -V 显示版本信息并退出
    -x 以JSON格式将sudoers写入输出文件
    
  • sudo命令
    用来以其他身份来执行命令,预设的身份为root。
    在/etc/sudoers中设置了可执行sudo指令的用户。
    用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
    # sudo -l
    查看此用户拥有的权限
    
    # sudo -k
    结束密码有效期,有效期结束后,执行特殊命令,需重新验证密码
    
    # sudo -u you ls /home/you
    指定用户执行命令
    
    # sudo touch file
     为空默认是root用户,以root账户来建一个文件file
    
    # sudo !!
    以root权限执行上一条命令
    
    # sudo -V
    -A 进行密码提示
    -b 在后台运行命令
    -C 关闭所有>=num的文件描述符
    -E 在执行命令时保留用户环境
    -e 编辑文件而非执行命令
    -g 以指定的用户组或 ID 执行命令
    -H 将HOME变量设为目标用户的主目录。
    -h 显示帮助消息
    -h 在主机上运行命令(插件支持)
    -i 以目标用户身份运行一个登录shell;可同时指定一条命令
    -K 完全移除时间戳文件
    -k 无效的时间戳文件
    -l 列出用户权限或检查某个特定命令;对于长格式,使用两次
    -n 非交互模式,不提示
    -P 保留组向量,而非设置为目标的组向量
    -p --prompt=prompt 使用指定的密码提示
    -r --role=role 以指定的角色创建 SELinux 安全环境
    -S 从标准输入读取密码
    -s 以目标用户运行 shell;可同时指定一条命令
    -t 以指定的类型创建SELinux安全环境
    -U 在列表模式中显示用户的权限
    -u 以指定用户或ID运行命令(或编辑文件)
    -V 显示版本信息并退出
    -v 更新用户的时间戳而不执行命令
    -- 停止处理命令行参数
    
    日志与安全:需手动开启
    touch /var/log/sudo
    vi /etc/syslog.conf
    
    在syslog.conf最后面加一行(用tab分隔)并保存
    local2.debug                    /var/log/sudo
    
    重启日志守候进程:
    ps aux grep syslogd
    
    syslogd进程的PID填入:
    kill –HUP PID
    
    sudo ls /rootanaconda-ks.cfg
    

sudo的配置文件配置好后,可以用切换到授权的普通用户下,通过sudo -l来查看哪些命令是可以执行的或禁止的

/etc/sudoers 文件中每行是一个规则,前面带有#号是注释的内容,并不执行;如果规则很长,可以写在多列上,可以用\号来续行

/etc/sudoers 的规则可分为两类;一类是授权规则,另一类是别名定义;别名定义并不是必须的,但授权规则是必须的

  • sudo命令授权规则
    root ALL=(ALL) ALL
    you ALL=(ALL) ALL
    将you用户设置为拥有所有权限
    第一个ALL是指网络中的主机
    第二个括号里的ALL是指目标用户,最后一个ALL是指命令名
    
    you localhost=/usr/bin/lastb
    限制用户的权限,只执行lastb
    
    用户在linux主机上以you1或you2的身份执行kill命令:
    you    linux=(deng,itcast)    /bin/kill
    
    把you1设为默认的目标用户:
    Defaults:foobar    runas_default=you1
    Defaults后面如果有冒号,是对后面用户的默认
    如果没有,则是对所有用户的默认
    
    you localhost=NOPASSWD:     /bin/cat, /bin/ls
    修改配置文件,登录了使用sudo不需要输入密码
    
    让普通用户具有所有超级用户的权限而又不用输入密码
    you ALL=(ALL)NOPASSWD:ALL
    
  • sudo命令别名规则
    Alias_Type NAME = item1, item2, ...
    Alias_Type NAME = item1, item2 : NAME = item4, item5
    Host_Alias 定义主机别名
    User_Alias 用户别名,别名成员可以是用户和用户组(前面要加%号)
    Runas_Alias 用来定义runas别名,即sudo 允许切换至的用户
    Command_Alias 定义命令别名
    
    NMAE的命名是包含大写字母、下划线以及数字,必须以大写字母开头
    
    item成员受别名类型 Host_Alias、User_Alias、Runas_Alias、
    Command_Alias 制约,什么类型的别名要有什么类型的成员相配
    
    定义用户别名,下有四个成员,要在系统中确实在存在的
    User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun 
    
    定义用户别名NETAD 
    User_Alias NETAD=beinan,bnnb 
    
    定义用户别名WEBMASTER
    User_Alias WEBMASTER=linuxsir 
    
    上面三行的别名定义,可以通过这一行来实现
    User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun
    :NETAD=beinan,bnnb:WEBMASTER=linuxsir 
    
    命令别名下的成员必须是文件或目录的绝对路径
    Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network
    
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值