【问题标题】:Error while using usseradd from perl code : cannot lock /etc/passwd使用 perl 代码中的 usseradd 时出错:无法锁定 /etc/passwd
【发布时间】:2019-05-26 09:51:14
【问题描述】:

我正在为用户管理编写一个 perl 程序,但我不断收到此错误: useradd:权限被拒绝。 useradd:无法锁定 /etc/passwd;稍后再试。 我使用 su -c 命令运行程序,下面的代码是相关的 sn-p - https://github.com/Kajkacz/ASU_Indexing/blob/master/Users.pl 的完整代码。

sub createUserPage{

    $Mw->destroy;
    $Mw = MainWindow->new;
    $Mw->geometry("500x300");
    $Mw->title("Create User");
    my $uid = &getFreeUID;
    my $uspasswd = &randomizePassword;
    my $usname = 'UsernameHere';

    my $username = $Mw->Entry(-textvariable=> \$usname )->grid($Mw->Label(-text => 'Username'));
    my $UID = $Mw->Entry(-textvariable=> \$uid )->grid($Mw->Label(-text => 'UID'));
    my $password = $Mw ->Entry(-textvariable=> \$uspasswd)->grid($Mw->Label(-text => 'Password'));

    $Mw->Button(-text=>"Create User", -command =>sub{&createUser($uid,$usname,$uspasswd)},-width => $buttonWidth)->grid();
    $Mw->Button(-text=>"Check If UID is free", -command =>sub{&checkUID($uid)},-width => $buttonWidth)->grid();
    $Mw->Button(-text=>"Get Random Password", -command =>sub{$uspasswd = &randomizePassword},-width => $buttonWidth)->grid();

    $Mw->Button(-text=>"Back to Main Menu", -command =>sub{&getStartWindow},-width => $buttonWidth)->grid();}

sub createUser{
     my $UID = shift;
     my $username =     shift;
     my $password = shift;
     my $adduser = '/usr/sbin/useradd';
     my $cmd = qq($adduser \"$username\");
     # my $cmd = qq($adduser \"$username\" -p \"$password\" -u $UID);
     print "$cmd \n";
     system $cmd; }

我欢迎任何可能的见解。另外,我的第一个 Perl 程序,请随时更正我的代码

【问题讨论】:

  • 这只是两个函数定义;运行此代码不会做任何事情。
  • 缺少use strict; use warnings;
  • 不要用&调用子程序。
  • 请修正你的缩进。
  • @melpomene 嘿,对不起,第一次在 SO 上发帖,希望会更好。上面有一个github的链接,整个代码有点长,所以我不想在这里完整发布。我应该这样做吗?我使用严格和警告。

标签: perl unix


【解决方案1】:

所以,我通过使用此解决方案找到了解决方法:How to fix 'sudo: no tty present and no askpass program specified' error? 并让用户添加到命令列表中运行时没有密码提示。不确定是hacky还是好的解决方案

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多