发现 sudo 机制的一个缺陷
一般的机器只有管理员才能设定时间。Ubuntu 的机器有 sudo 权限的用户可以使用 sudo 来获得管理员权限。
如果机器时间不对,可以通过 sudo ntpdate
sudo 本身有一个时间戳,一段时间内不必再次输入密码。如果这个时间戳的时间是未来的时间,那么会 sudo 会认为有诈,从而拒绝执行 sudo 的命令。
问题就来了:如果一个机器时间快了很多,通过设置时间的命令往回调后,sudo 就用不了了。只能 (1)重启,或者 (2)让其他管理员用户修改时间戳,或者 (3)等到时间戳过期之后再使用。
Ubuntu 默认是把系统时间当作 UTC 基准的,这一点与 Windows 不同。如果要重装一遍系统,经常遇到时间不是快 8 个小时就是慢 8 个小时的现象。如果碰上快8个小时的情况,在系统中重设时间后,将有8个小时左右不能再用 sudo。
这真是一个棘手的问题。如果是服务器,重启一次是很麻烦的。