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。完成后,exit
root shell。