我有一个 CIFS 安装命令,我想让用户运行sudo
该命令,要求他们输入密码。我用这样的行编写了一个脚本:
/usr/sbin/mount.cifs -o user=$SUDO_USER,domain=WORKGROUP //stserv.foo.com/share /mnt/share
并向用户提供sudo
脚本。当系统提示用户输入密码然后安装时,这一切正常。
但是我想对其设置超时,因此我timeout 10s
在脚本中的命令前面添加了 。现在运行时sudo
它不起作用。用户会看到密码提示,但当他们键入密码时,密码会以纯文本形式显示在终端上,而不是“*****”,并且命令会挂起直到超时。然后它尝试将用户的密码作为命令运行。
发生这种情况时查看进程树,我看到:
bash───sudo(root)───mount_sleepepi───timeout───mount.cifs───mount.cifs───systemd-ask-pas
所以看来这systemd-ask-pass
正在成为障碍。
有没有办法在超时情况下防止这种情况发生。
答案1
正如@meuh 指出的,答案是在超时命令中添加 --foreground 选项。