要求输入 sudo 密码,登录后进入 bash shell

要求输入 sudo 密码,登录后进入 bash shell

使用 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

测试失败,因为 的权限/root700。因此,它使用 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

相关内容