使用 11.10 时,当我的任何用户使用 bash shell 登录成功时,都会被要求提供他们的 sudo 密码,例如
Last login: Fri Jan 20 19:13:36 2012 from x.x.x.x
[sudo] password for *user*:
但是,使用不同的 shell(即 zsh)时,不需要输入 sudo 密码。
这是怎么回事?
[编辑:更多信息]
因此,这当然是显而易见的,但仍然很奇怪。
/etc/bash.bashrc
#!/bin/sh -e
#execute firstlogin.sh only once
if [ ! -e /root/firstlogin_done ]; then
if [ -e /root/firstlogin.sh ]; then
/root/firstlogin.sh
fi
# This part should not be necessary any more
# sudo dpkg-reconfigure -p critical console-setup &> /dev/null
sudo touch /root/firstlogin_done
fi
该文件创建得很好,例如
$sudo ls -al /root/firstlogin_done
-rw-r--r-- 1 root root 0 2012-02-29 16:04 /root/firstlogin_done
[编辑:这是一个错误吗]
所以,我明白为什么会发生这种情况。但我不明白为什么发生这种情况。这是我没有更新导致的错误吗?
答案1
测试失败,因为 的权限/root
为700
。因此,它使用 sudo 在每次登录时破坏该文件。
答案2
好的,将评论转为答案。
这似乎与 bug 有关https://bugs.launchpad.net/ubuntu/+bug/409335。我无法理解为什么有人会认为在 /etc/bash.bashrc 中使用 sudo 是个好主意。更不用说 hashbang 对于 bash 脚本来说是完全错误的。
但是,/etc/bash.bashrc 并不是真正需要的。Vanilla bash 甚至不会读取 /etc/bash.bashrc;这主要是 Debian/Ubuntu 的一个功能,即在以交互方式启动 bash 时,对 bash 进行修补以专门查找和获取 /etc/bash.bashrc。
无论如何,如果您想要全新安装所具有的 /etc/bash.bashrc,请获取源代码并将 etc.bash.bashrc 文件复制到 /etc/bash.bashrc
sudo apt-get install dpkg-dev
apt-get source bash
sudo cp bash-4.2/debian/etc.bash.bashrc /etc/bash.bashrc