用shell脚本禁用sudo -i
时间: 2023-06-29 09:07:04 浏览: 291
要禁用 `sudo -i`,可以使用 shell 脚本来覆盖或删除 `/usr/bin/sudo` 中的该选项。
以下是一种覆盖 `/usr/bin/sudo` 的方法:
1. 创建一个备份文件,以防万一:`sudo cp /usr/bin/sudo /usr/bin/sudo.bak`
2. 使用 `sudoedit` 命令编辑 `/usr/bin/sudo` 文件:`sudoedit /usr/bin/sudo`
3. 将以下内容添加到文件中:
```
#!/bin/sh
if [ "$@" = "-i" ]; then
echo "Error: sudo -i has been disabled."
exit 1
fi
exec /usr/bin/sudo.real "$@"
```
4. 保存并退出编辑器。
5. 更改 `/usr/bin/sudo` 的权限,使其可执行:`sudo chmod +x /usr/bin/sudo`
现在,如果用户尝试使用 `sudo -i`,将会收到错误消息并退出。
请注意,这种方法可能会影响系统的稳定性,并且在更新 sudo 包时可能会被覆盖。因此,您应该慎重考虑是否禁用 `sudo -i`。
相关问题
编写shell脚本 禁用selinux、firewalld
在Linux系统中,如果你想禁用SELinux(Security-Enhanced Linux)和firewalld防火墙服务,你可以编写一个简单的bash shell脚本来完成这个任务。但是需要注意的是,这一步操作可能会对系统的安全性产生影响,只应在了解其后果并且有充分理由的情况下进行。
以下是禁用SELinux和firewalld的基本步骤:
```bash
#!/bin/bash
# 检查是否已经在root权限下运行
if [ "$(id -u)" -ne 0 ]; then
echo "Please run this script with sudo or as root."
exit 1
fi
# 禁用SELinux(如果已启用)
if service selinux status | grep -q 'enabled'; then
setenforce 0
echo "SELinux has been disabled."
else
echo "SELinux is already in permissive mode (setenforce 0)."
fi
# 关闭firewalld服务并确认状态
if systemctl is-active firewalld &>/dev/null; then
systemctl stop firewalld
if systemctl is-active --quiet firewalld; then
echo "Firewalld has been stopped."
else
echo "Failed to stop firewalld."
fi
else
echo "Firewalld is not running."
fi
# 提示用户重启系统以使更改生效
echo "For changes to take effect, please reboot your system."
# 提供一些额外的信息
linux shell 无线网卡禁用脚本
在 Linux 的 shell 脚本中,你可以使用 `ifconfig` 或 `ip` 命令来禁用无线网卡。以下是一个示例脚本:
```bash
#!/bin/bash
# 获取无线网卡接口的名称
wifiInterface=$(iwconfig 2>/dev/null | awk '/IEEE 802.11/ {print $1}')
if [ -n "$wifiInterface" ]; then
# 禁用无线网卡
ifconfig $wifiInterface down
# 或者使用 ip 命令禁用无线网卡
# ip link set $wifiInterface down
echo "无线网卡已禁用"
else
echo "未找到无线网卡接口"
fi
```
将上述代码保存为 `.sh` 格式的文件,例如 `disable_wifi.sh`。然后,通过运行该脚本来禁用无线网卡:
```bash
bash disable_wifi.sh
```
执行脚本后,将会禁用找到的第一个无线网卡接口。
请注意,运行脚本需要具有足够的权限。如果没有权限,可以尝试使用 `sudo` 命令来执行脚本。
希望这个示例能满足你的需求。如果有其他问题,请随时提问!
阅读全文