我正在尝试编写一个小的Perl脚本来创建目录结构.要创建目录,我使用标准模块File :: Path,如下所示:
make_path($directory,
{
owner => 'apache',
group => 'apache',
mode => 0500
}
);
Run Code Online (Sandbox Code Playgroud)
执行脚本时,将根据需要创建目录,并按预期设置umask,但文件的所有者和组都是"root".这是错误的,但错误在哪里?错误消息不会打印或由错误参数给出.
提前致谢,
约斯特
我只是尝试了它,并得到了与你相同的结果.我查看了文档:
perldoc File::Path
Run Code Online (Sandbox Code Playgroud)
......并没有提到'所有者'的选择.但是,搜索最新版本(2.08,AFAICT)文档,它就在那里.你能检查一下你系统上的模块版本吗?
perl -MFile::Path -e 'print $File::Path::VERSION'
Run Code Online (Sandbox Code Playgroud)
如果你没有运行2.08,那可能就是问题所在.我正在尝试追踪该模块的更改日志,但遇到困难......
[稍后]
好的,所以这就是你想要做的:
#!/usr/bin/perl -w
use strict;
use File::Path qw( make_path );
my $directory = $ARGV[0];
my $owner = 33;
make_path( $directory, { mode => 0500 } );
chown 33, 33, $directory;
Run Code Online (Sandbox Code Playgroud)
最后,最后一行是你要注意的那一行.使用该版本的File :: Path创建所有者时,无法设置所有者,但您可以更改它.我的例子中的33是我系统上www-data用户的UID; 显然,您希望将33更改为更适合您系统的内容.此外,您需要确保您的脚本以能够执行此操作的权限运行.例如,如果您以低级用户身份运行它,它将无法运行,但如果您以root身份运行它,则chown将起作用.你可能想在那里找到一些中间立场.
| 归档时间: |
|
| 查看次数: |
3846 次 |
| 最近记录: |