【问题标题】:Change linux password in a script, quietly在脚本中更改 linux 密码,悄悄地
【发布时间】:2014-07-16 03:43:07
【问题描述】:

作为尝试在我的 root ssh 会话中实施安全措施的一部分,我正在尝试设计一种在 root 用户登录 n 秒后启动脚本的方法,并更改用户密码并自动注销用户。

我一直在尝试静默更改密码。我有以下代码:

echo -e "new\nnew" | passwd -q

这不是像手册页中提到的那样“悄悄地”更改密码,而是输出:

~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

这没有多大帮助。

我尝试管道化 stdout 和 stderr,但我认为我误解了管道化。

~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q > /dev/null
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q /dev/null 2>&1
passwd: user '/dev/null' does not exist

通过脚本悄悄地更改密码的正确方法是什么?

【问题讨论】:

  • 试试echo -e "new\nnew" | passwd -q 2>&1 /dev/null
  • @Blender,这给了我:“密码:用户 '/dev/null' 不存在”
  • 这真的安全或有用吗?
  • @ColonelPanic 想法是除非启动脚本的进程在n秒内终止,否则将未授权用户踢出系统,删除authorized_keys,只能使用新密码登录。所以很有用。关于secure..bash 脚本不是很安全,是吗? :)

标签: linux bash shell unix passwd


【解决方案1】:

如果你想同时重定向stdout和sterr:

echo "..." | passwd &> /dev/null

相当于

echo "..." | passwd > /dev/null 2>&1

这意味着“将标准输出重定向到/dev/null,然后将(复制)标准错误重定向到标准输出”。这样,您将 stdout 和 stderr 都重定向到 null ...但这可能还不够(我相信在这种情况下会如此)。但理论上程序可能会直接写入终端。例如这个脚本

$ cat test.sh
echo stdout
echo stderr 1 1>&2
echo stderr 2 >/dev/stderr
echo stderr 3 >/dev/fd/2
echo bad luck > /dev/tty

$ ./test.sh &> /dev/null
bad luck

要摆脱此输出,您必须强制程序在伪终端中运行,例如 http://empty.sourceforge.net/ 。但这只是一个旁注&> /dev/null 可以正常工作。

【讨论】:

    【解决方案2】:

    你也可以这样做:

    mkpasswd
    # Password:blah
    # BVR2Pnr3ro5B2
    
    echo "user:BVR2Pnr3ro5B2" | chpasswd -e
    

    所以密码已经在脚本中加密了。

    【讨论】:

      【解决方案3】:

      这对我有用

      echo "passssssword" | passwd root --stdin > /dev/null
      

      注意:--stdin 仅适用于 root 用户

      【讨论】:

      • 是的,我试过了。但是,即使我是 root 用户,我的服务器上的 passwd 也无法识别 --stdin 选项。
      • 只为我工作,没有 --stdin 标志,只需发送标准输入
      猜你喜欢
      • 2018-03-26
      • 2012-01-23
      • 2011-10-30
      • 2015-02-14
      • 2019-02-17
      • 2019-11-22
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      相关资源
      最近更新 更多