问题:应该允许谁来发起 PPP 连接?
如果你检查 PPP 工具的权限,答案充其量是令人困惑的。启动连接涉及四个组件:两个脚本(ppp-on 和 ppp-on-dialer)和两个程序(pppd 和 chat)。按照 PPP 工具安装过程的设置(注意:通过其他发行版获得的 PPP 工具的权限假设会有所不同),这四个文件具有以下权限:
非特权用户启动 PPP 连接存在两个障碍:
后一个限制是 UNIX 的一项安全功能:您有权执行该脚本,但无权将其读入解释器。如果您尝试“按原样”使用这些工具,则确实必须是 root 才能启动 PPP。或者,您可以遵循 Phil Hughes 在 1997 年 5 月 LJ 专栏中的建议,编写一个特殊的 setuid 程序来启动和停止 PPP。
我已经决定在我的系统上(我承认,我确实是唯一的用户)非特权用户可以启动 PPP 连接。该策略通过对这些工具进行一项更改(使 ppp-on-dialer 可供所有人读取/运行)和一个 hack:rscript 来实现。
rscript 工具是一个 setuid-root 程序,用于解决只运行脚本的问题;它以特权用户身份打开脚本,然后以实际用户身份解释它。调用
rscriptrscript 对正在执行的脚本有两个限制性假设:
尽管存在限制,但 rscript 与 PPP 脚本结合使用仍然非常有用。
rscript 是否是一个安全漏洞?除非用户能够替换执行脚本的解释器,否则 rscript 似乎不允许用户访问脚本的内容或执行任何特权操作。(如果我错了,我相信我会听到的。)