perl脚本与suid在启动?

时间:2014-09-13 19:22:21

标签: perl ubuntu boot su setuid

有很多文章解释了这个问题:现代POSIX系统不再允许解释shell脚本,但我发现没有一个解释一步一步解释推荐的ubuntu Linux方式,从2014年开始,创建一个在启动时运行的特权PERL脚本。这不是用于共享脚本或将其分发给其他人。它只是我自己在1用户ubuntu桌面系统上的使用。它应该很简单。

那么,应该如何我现在在ubuntu 14.10上这样做了?建议的方式是什么?

我的perl脚本必须在启动过程结束时启动,为root,在perl中执行比在C中更容易的事情,将rsync文件放到备份驱动器中,然后睡一分钟,然后执行它再次。另外,我希望能够从命令行测试我的脚本以查看它是否正常工作。这是一个简单的版本:

#!/usr/bin/perl -wT
use strict;
use warnings FATAL => qw{ uninitialized };

use POSIX;

$ENV{"PATH"} = "/usr/bin";
$ENV{"BASH_ENV"} = "";

print "you are euid =".geteuid()." = $> = ".`whoami`;
## do a lot of stuff in an endless loop with sleep

这可以正常运行 sudo testeuid.pl ,但如果我chmod这个

-rwsrwsr-x 1 root 196 Sep 13 11:50 testeuid.pl*

然后尝试以普通用户身份运行它,它没有(它没有获得权限)。但是我认为一旦我做了-T(虽然不是普通的shell脚本),这应该适用于perl。 suidperl已被弃用。

再次,这里的任务很简单:

  1. perl脚本需要以root身份运行并且
  2. 需要在正常的计算机启动顺序结束时启动。
  3. 我曾希望提出

     $ daemon /usr/local/bin/testeuid.pl &
     $ exit 0
    

    进入rc.local,chmod rc.local是可执行的,并且完成了。不行。它没有用。我认为这是setuid问题,而不是我做错了。 (很难测试......我不想重新启动。)rc.local执行的uid权限是什么?

    或者,我是否需要或应该写一项服务(更多工作!)?但是,然后,使用systemd和upstart,这是如何正确完成的(仅限我自己)?很难跟上这一点。我只想要一些能在ubuntu上使用几年的东西。我不在乎如何。

    一些帖子告诉我写一个C包装脚本来逃避意图。这是意图吗?

    其他一些帖子说我应该探索/ etc / sudoer修改。

    现在在我自己的个人ubuntu Linux上启动时运行我自己的特权PERL脚本的推荐简单方法是什么?

0 个答案:

没有答案