1

スクリプトを作成していて、追加の構成情報を.confファイルに書き込めるようにする必要があります。

問題:

問題は、権限の問題により、ファイルに追加データを書き込めないことです。私が使用しているコードは次のとおりです。

my $conf = "/etc/lighttpd/lighttpd.conf";
open my $handle, ">>", $conf or die $!;
# spacing counts, hence the indentation
print $handle 'fastcgi.server = (
    ".php" => ((
        "bin-path" => "/usr/bin/php-cgi",
        "socket" => "/tmp/php.socket"
    ))
)'."\n";
close $handle;

lighttpd.confファイルは の傘下にあるためroot:root、次の行に沿って何かを行わないと書き込むことができません。

system("sudo chown $USER:$USER /etc/lighttpd/lighttpd.conf");
# write to file...
system("sudo chown root:root /etc/lighttpd/lighttpd.conf");

上記は私にはかなりハックに思えますが、これは避けたいと思います。

質問

この情報をファイルに書き込むためのより洗練された方法はありますか? おそらく私が知らないBASHコマンドですか?

4

2 に答える 2

0

解決済み

shawncorey推奨に従って、私が持っていたすべてのインスタンスを削除しました

 system("sudo [command]");

次のようにスクリプトを実行しました。

 sudo ./test.pl

言うまでもなく、それは完璧に機能しました!

于 2013-07-13T18:26:27.280 に答える
-2

「chown」を実行して、perl のファイル リストの所有者 (およびグループ) を変更できます。

例:

#!/usr/bin/perl

$cnt = chown $uid, $gid, 'foo', 'bar';
chown $uid, $gid, @filenames;
于 2013-07-13T11:06:24.630 に答える