因为 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)并且:-
使 pppd suid root,由用户 root 和组 PPP 拥有,此文件上的“其他”权限为空。 然后它应该看起来像:-
-rwsr-x--- 1 root PPP 95225 Jul 11 00:27 /usr/sbin/pppd |
使 ppp-on/off 脚本由用户 root 和组 PPP 拥有。
使 ppp-on/off 脚本可由组 PPP 读取/执行。
-rwxr-x--- 1 root PPP 587 Mar 14 1995 /usr/sbin/ppp-on -rwxr-x--- 1 root PPP 631 Mar 14 1995 /usr/sbin/ppp-off |
使 ppp-on/off 的其他访问权限为零。
将将启动 PPP 的用户添加到 /etc/group 中的 PPP 组。
即使您这样做,普通用户仍然无法在软件控制下关闭链接! 运行ppp-off脚本需要 root 权限。 但是,任何用户都可以关闭调制解调器(或断开电话线与内置调制解调器的连接)。
此设置的另一种(更好)方法是使用sudo程序。 这提供了更高的安全性,并且允许您进行设置,以便任何(授权)用户都可以使用脚本激活/停用链接。 使用sudo将允许授权用户干净安全地激活/停用 PPP 链接。