创建新的linux用户后出现错误消息

时间:2014-06-16 15:16:37

标签: linux perl cpan

我使用带有CPAN模块Unix::Passwd::File的Perl脚本创建了一个新的debian用户(我使用过此模块,因为我被要求创建用户而不使用adduser或{{1 }})。

此模块通过添加以下行来创建用户:

  • useradd
  • /etc/passwd
  • /etc/shadow
  • /etc/group

然后Perl脚本使用:

创建主目录
/etc/gshadow

在此之后我尝试登录并收到以下错误消息:

mkdir $directory;
chown $user, $directory;

我在这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

chown失败了,因为你没有给它正确的参数。返回值是已修改的文件数,因此您可以使用它来检查是否成功:

chown "user", "file" or die "Couldn't chown";

chown的正确参数是:

chown $uid, $gid, @filenames;

e.g。

chown 123, 456, "/home/user";
chown 123, -1, "/home/user"; # Don't change the group id

可以从Unix::Passwd::File::add_user的结果中提取新创建的用户的用户和组ID:

my $result = add_user( ... );
if ($result->[0] == 200) { # Success
    my $uid = $result->[2]->{'uid'};
    my $gid = $result->[2]->{'gid'};
    ...
}