0064. shell命令--visudo

目录

64. shell命令--visudo

功能说明

语法格式

选项说明

实践操作

授权格式


64. shell命令--visudo

功能说明

        visudo 是 Linux 系统中用于安全地编辑 sudoers 文件的命令。sudoers 文件是 sudo 的主要配置文件,它决定了哪些用户和组可以以什么方式执行哪些命令。由于 sudoers 文件的错误配置可能导致系统安全漏洞或拒绝服务(DoS)攻击,因此直接编辑此文件是不推荐的。相反,应该使用 visudo 命令来编辑它,因为它提供了几个安全特性。

        visudo 命令专门用来编辑 /etc/sudoers 这个文件的。授权配置在 /etc/sudoers 这个文件中,默认这个文件是只读权限,它有个专门的工具叫 visudo,这个命令能不仅能编辑这个配置文件,还能对输入内容做语法检测,如果语法有误,会提示错误位置,并且不会保存到配置文件中,它还能指出语法错误。其实 visudo 命令相当于:vim /etc/sudoers。

语法格式

SYNOPSIS
     visudo [-chqsV] [-f sudoers] [-x output_file]

选项说明

-c:启用check-only模式,手动执行语法检查
-q:启用安静模式,此模式下不显示错误信息 
-s:启用严格检查sudoers文件

实践操作

0. 环境准备
# 创建三个用户并设置密码为123456
seq 3|sed -r 's#(.*)#useradd MineGi-\1;echo '123456'|passwd --stdin MineGi-\1#g'|bash
tail -3 /etc/passwd

1. 执行 visudo 对普通用户授权
\cp -rp /etc/sudoers{,.bak}    #操作前备份
ls /etc/sudoers{,.bak}
visudo    #进入配置文件,按100 G键,再按o键,在下面添加下面内容,然后保存退出

MineGi-1 ALL=(ALL) NOPASSWD: ALL
MineGi-2 ALL=(ALL) NOPASSWD: /usr/bin/useradd,/usr/bin/userdel

2. 每次执行visudo并修改内容后,保险起见,需要语法检查
visudo -c    #提示/etc/sudoers: parsed OK,表示无异常

3. 使用快速操作命令增加 sudo 授权
echo "MineGi-3 ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c
# 剩下验证步骤,等讲到sudo命令进行验证

授权格式

who     where=(whom)    commands
用户    主机=(以谁的身份) commands
#用户配置可以是:
 username
 #uid
 %groupname
 %#gid
 user_alias
#主机配置:
 ip
 hostname
 Netaddr
 host_alias
#commands配置
 command #命令要绝对路径指定
 cmnd    #命令别名,灵活使用能提高效率
-----------------------------------
在sudo配置中,可能对多个用户配置多个相同命令,这时候可以使用别名来配置。

#定义别名的方法:
ALIAS_TYPE  NAME=item1, item2, item3, ...       NAME:别名名称,必须使用全大写字符;
     ALIAS_TYPE:
     User_Alias    用户别名,别名成员能够是用户,用户组(前面要加%号)
     Host_Alias    定义主机名别名
     Runas_Alias    用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许转换至的用户
     Cmnd_Alias    定义命令别名
需要注意的是:
1.在每一种Alias后面定义的别名 NAME 可以是包含大写字母、下划线连同数字,但必须以一个大写字母开头
2.配置文件中的 Default env_reset 表示重置(就是去除)用户定义的环境变量,也就是说,当你用sudo执行一个命令的时候,你当前用户设置的所有环境变量都是无效的。
 
例如:
 User_Alias  NETADMIN=tom, jerry
 Cmnd_Alias NETCMND=ip, ifconfig, route

 NETADMIN    localhost=(root)    NETCMND

格式简单介绍

待授权的用户或组

机器=(授权角色)

可以执行的命令

user

MACHINE=

COMMANDS

usertest1

ALL=(ALL)

ALL

shell逐条解释注释 ``` getenforce setenforce 0 cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\/usr\/sbin\/sshd/\/usr\/local\/sbin\/sshd/g}' /usr/lib/systemd/system/sshd.service sed -i "s/GSSAPIAuthentication/#GSSAPIAuthentication/" /etc/ssh/sshd_config sed -i "s/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/" /etc/ssh/sshd_config sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/" /etc/ssh/sshd_config sed -i "s/#UsePAM yes/UsePAM yes/" /etc/ssh/sshd_config chmod 600 /etc/ssh/ssh_host_rsa_key chmod 600 /etc/ssh/ssh_host_ecdsa_key chmod 600 /etc/ssh/ssh_host_ed25519_key mv /usr/local/sbin/sshd /usr/local/sbin/sshd.old202211 mv /lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.1.old202211 mv /srv/libcrypto.so.1.1 /lib64/ mv /srv/sshd /usr/local/sbin/ chmod 755 /usr/local/sbin/sshd chmod 755 /lib64/libcrypto.so.1.1 systemctl daemon-reload systemctl restart sshd.service source /etc/profile sshd -V useradd secure echo 'Ofm#6%3%fm0IWH'|passwd --stdin secure echo "secure ALL=(ALL) ALL" >> /etc/sudoers sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config service sshd restart systemctl daemon-reload systemctl restart sshd.service sed -i "s/secure ALL=(ALL) ALL/secure ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers chage -M 99999 secure sleep 2 useradd aqassoc echo 'dAxgDt^7LT' | passwd --stdin aqassoc mkdir /batshell chown -R aqassoc:aqassoc /batshell echo 'aqassoc ALL=(ALL) NOPASSWD:ALL,!/bin/su,!/sbin/init,!/sbin/shutdown,!/sbin/halt,!/sbin/reboot,!/usr/sbin/visudo,!/usr/bin/passwd' >> /etc/sudoers sh /srv/script.sh sleep 2 tar -xvf /srv/ssl-1.1.1o* -C /srv/ mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old cp /etc/ld.so.conf /etc/ld.so.conf.old ln -s /srv/ssl-1.1.1o/bin/openssl /usr/bin/openssl ln -s /srv/ssl-1.1.1o/include/openssl /usr/include/openssl srvlib=`cat /etc/ld.so.conf | grep '/srv/ssl-1.1.1o/lib/' | wc -l` if [ $srvlib -eq 0 ];then sed -i 's/\/srv/#\/srv/'g /etc/ld.so.conf echo '/srv/ssl-1.1.1o/lib/' >> /etc/ld.so.conf else echo 'ssl-1.1.1n is ok!' fi ldconfig -v |grep ssl openssl version rm -rf /srv/root_password.sh rm -rf /srv/ssl-1.1.1o_7.tar.gz curl --connect-timeout 10 -# http://133.64.86.246/iso/shell/initialization.sh -o /tmp/initialization.sh # 只有两个参数 dcn/dmz netbond/netskip baseline/baseskip sh /tmp/initialization.sh dcn netbond/netskip baseline/baseskip ```
07-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值