【问题标题】:Executing a setuid perl script within a perl script在 perl 脚本中执行 setuid perl 脚本
【发布时间】:2011-11-18 16:31:00
【问题描述】:

我有两个 perl 脚本:

  1. getPwd.pl - 返回密码的 setuid perl 脚本

    sub getOraPwd{ ... 返回 getOraPwd; } getOraPwd();

  2. testDBConn.pl

我想在 testDBConn.pl 脚本中调用 getPwd.pl 并将 getPwd 脚本的结果分配给 $password 变量以连接到数据库。请记住 getPwd.pl 脚本是 setuid,因此设置 testDBConn.pl 以运行 getPwd.pl

例如。

$username="blah";
$password=result from getPwd.pl
$dsn=qq{...};
$dbh=DBI->connect($dsn, $username, $password)};

【问题讨论】:

  • 那么,您的问题到底是什么?

标签: perl setuid


【解决方案1】:

调用 setuid Perl 脚本与调用系统上的任何其他可执行文件没有什么不同:

my $password = `getPwd.pl`;

但是,我建议您不要使用 setuid Perl 脚本。任何语言的 setuid 可执行文件都有很多缺陷。此外,在 Perl 5.10.1 中不推荐使用它们,并在 5.12 中删除。更好的选择是在sudo 下运行getPwd.pl

【讨论】:

  • 谢谢。您介意详细说明 sudo 吗?设置有多容易?需要编辑的内容等。
  • @user621092 -- 如果你有任何现代 Linux 发行版,你几乎肯定已经拥有 sudo。配置文件是/etc/sudoers。您将希望能够在没有密码的情况下运行sudo getPwd.pl。我不记得我脑海中需要的所有配置,但是man sudoers 和 google 应该可以帮助您完成剩下的工作。
猜你喜欢
  • 1970-01-01
  • 2013-07-13
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多