第 14 章. 使用 PPP 和 root 权限

因为 PPP 需要设置网络设备,更改内核路由表等等,所以它需要 root 权限才能执行此操作。

如果 root 以外的用户要设置 PPP 连接,则 pppd 程序应设置 setuid root:-

-rwsr-xr-x   1 root     root        95225 Jul 11 00:27 /usr/sbin/pppd

如果 /usr/sbin/pppd 没有这样设置,那么以 root 身份执行以下命令:-

chmod u+s /usr/sbin/pppd

这样做会使 pppd 以 root 权限运行,即使该二进制文件是由普通用户运行的。 这允许普通用户使用必要的权限运行 pppd,以设置网络接口和内核路由表。

运行“set uid root”的程序是潜在的安全漏洞,您应该非常谨慎地使程序“suid root”。许多程序(包括 pppd)都经过精心编写,以最大限度地减少运行 suid root 的危险,因此您可以放心使用它(但不能保证)。

根据您希望系统如何运行 - 特别是如果您希望系统上的任何用户都能够启动 PPP 连接,您应该使您的 ppp-on/off 脚本具有全局读取/执行权限。(如果您的 PC 由您使用,这可能没问题)。

但是,如果您希望任何人都能启动 PPP 连接(例如,您的孩子在您的 Linux PC 上有帐户,并且您不希望他们在没有您监督的情况下连接到 Internet),您将需要建立一个 PPP 组(以 root 身份,编辑 /etc/group)并且:-

即使您这样做,普通用户仍然无法在软件控制下关闭链接! 运行ppp-off脚本需要 root 权限。 但是,任何用户都可以关闭调制解调器(或断开电话线与内置调制解调器的连接)。

此设置的另一种(更好)方法是使用sudo程序。 这提供了更高的安全性,并且允许您进行设置,以便任何(授权)用户都可以使用脚本激活/停用链接。 使用sudo将允许授权用户干净安全地激活/停用 PPP 链接。