在我的 ubuntu 16.04 笔记本电脑上,我试图设置iptables
规则,以便默认情况下拒绝所有应用程序访问互联网,并且只允许一组名为internet
. 我不会将该组添加到我自己的登录名中,而是随时使用sudo -g
或sg
访问互联网。例如:
sudo -g internet firefox
Run Code Online (Sandbox Code Playgroud)
或者
sg internet -c "firefox"
Run Code Online (Sandbox Code Playgroud)
但是,这种方法不起作用。以下是iptables
我添加的规则:
/sbin/iptables -A OUTPUT -p tcp --dport 80 -m owner --gid-owner internet -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -m owner --gid-owner internet -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 53 -m owner --gid-owner internet -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我已经测试了上述规则,当我删除所有者模块时,它可以完美运行并且所有应用程序都可以使用互联网。但是当我添加所有者模块和gid-owner
过滤器时,没有应用程序能够访问互联网(即使使用提到的sg
和sudo -g
命令)。
我究竟做错了什么?
我的每周备份脚本包含一堆 bash 语句,如下所示:
rsync -va /source_path/ /destination_path/
Run Code Online (Sandbox Code Playgroud)
现在,这很好用,但 -v(详细)选项的行为与我想要的不完全一样。我想要的是它应该只显示正在复制的更改文件,而不是它扫描的每个文件夹。
例如,如果document1
和document2
文件夹未更改,但 中的文件已更改document3
,则显示如下:
document1/
document2/
document3/
document3/foo.txt
Run Code Online (Sandbox Code Playgroud)
如果我-v
完全省略该选项,则它完全静音并且根本不显示任何内容。我想要输出显示,但我只对最后一行 (foo.txt) 感兴趣,即正在复制的文件,而不是rsync
扫描的数十个文件夹,例如 document1、document2 等。
有什么办法吗?