在Linux中禁用单个程序的网络访问,可以采取以下几种方法:
方法一:使用iptables和用户组
创建新组
```bash
sudo addgroup no-internet
```
将用户添加到新组
```bash
sudo adduser $USER no-internet
```
添加iptables规则
```bash
sudo iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
```
使用sg命令运行程序
```bash
sg no-internet "process command line"
```
方法二:使用脚本和iptables
创建新组
```bash
sudo groupadd no-internet
```
将用户添加到新组
```bash
sudo useradd -g no-internet username
```
创建脚本
```bash
sudo nano /home/username/.local/bin/no-internet
```
添加脚本内容
```bash
!/bin/bash
sg no-internet "$@"
```
使脚本可执行
```bash
chmod 755 /home/username/.local/bin/no-internet
```
添加iptables规则
```bash
sudo iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
```
方法三:使用trickle工具
安装trickle
```bash
sudo apt-get install trickle Debian/Ubuntu
sudo yum install trickle Fedora/CentOS/RHEL
```
使用trickle限制程序网络流量
```bash
trickle -d ``` 方法四:禁用特定网络接口 ```bash sudo ifdown eth0 ``` ```bash sudo ip link set dev eth0 down ``` ```bash sudo nmcli connection down connection_name ``` ```bash sudo systemctl stop NetworkManager ``` 方法五:使用ACL或ACG ```bash sudo systemctl disable NetworkManager ``` ```bash sudo setfacl -m u:username:deny /usr/bin/ping ``` 选择适合你的方法,根据具体需求选择禁用单个程序的网络访问。使用ifdown命令
使用ip命令
使用nmcli命令
停止NetworkManager服务
使用setfacl命令
使用setcap命令