sudo 记住命令列表的密码?

sudo 记住命令列表的密码?

Linux下有没有办法制作须藤命令来记住用户在第一行中输入的密码?

例如,对于用户必须输入的命令列表,其中一些命令需要须藤前缀,如何确保如果用户一次性将指令复制+粘贴到终端中,则只询问密码一次?

例子:

mkdir ~/acpiinfo ; cd ~/acpiinfo
sudo acpidump > acpidump.txt
# enter password 
sudo acpixtract acpidump.txt
ls *.dat | while read i; do iasl -d "${i}"; done
pid=`sudo dmidecode -s system-product-name`
vid=`sudo dmidecode -s system-version`
name=$pid.$vid
mkdir "${name}" && cp *.dsl "${name}"/ 
tar czf "${name}.tar.gz" "${name}"/ && ls -l "$( pwd )/${name}".tar.gz

答案1

它应该默认执行此操作。来自 sudo 联机帮助页:

用户通过身份验证后,时间戳就会更新,然后用户可以在短时间内(5 分钟,除非在 sudoers 中覆盖)内使用 sudo,而无需密码。

如果您的系统没有这样做,也许检查一下/etc/sudoers。来自 sudoers 联机帮助页:

时间戳超时

sudo 再次请求密码之前可以经过的分钟数。如果微小粒度不够,则超时可以包括小数部分,例如 2.5。默认值为 5。将其设置为 0 以始终提示输入密码。如果设置为小于 0 的值,则用户的时间戳永远不会过期。这可用于允许用户分别通过 sudo -v 和 sudo -k 创建或删除自己的时间戳。

所以听起来timestamp_timeout变量可能已设置为 0。启动visudo并注释该行或将其设置为您喜欢的内容。

答案2

双 sudo 是不必要:

sudo sh -c "apt-get update && apt-get -y dist-upgrade && apt-get -y autoremove && apt-get autoclean"

即使一个命令可能需要很长时间,这种方法也能正常工作。

答案3

这个sudo bash -c 'sudo cmd1; cmd2; sudo cmd3;...'习惯用法似乎记住了一系列命令的密码。

# test cases
sudo bash -c 'sudo ls -ld *; sleep 500; sudo ls -ld *'
sudo -k
sudo bash -c 'sudo ls -ld *; sudo -k; sleep 5; sudo ls -ld *'

答案4

sudo -s将以 root 身份启动 shell(可能会提示您输入密码)。然后,您可以输入多个命令,而无需在它们前面加上 sudo。完成后,exitroot shell。

相关内容