С 11.10, когда любой из моих пользователей с bash shell входит в систему при успешном входе, их просят предоставить свой пароль sudo, например
.Last login: Fri Jan 20 19:13:36 2012 from x.x.x.x
[sudo] password for *user*:
Однако, используя другую оболочку (а именно 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
[править: это ошибка]
Итак, я понимаю, почему это происходит. Но я не понимаю , почему это происходит. Это ошибка, которую я не обновил?
Тест не пройден, поскольку разрешение на /root
равно 700
. Следовательно, он использует sudo, чтобы засорять файл при каждом входе в систему.
Хорошо, превращаем комментарий в ответ.
Похоже, это связано с ошибкой https://bugs.launchpad.net/ubuntu/+bug/409335 . Я не могу понять, почему кто-то может подумать, что было бы неплохо использовать sudo в /etc/bash.bashrc. Не говоря уже о том, что hashbang совершенно не подходит для сценария bash.
Однако /etc/bash.bashrc на самом деле не нужен. Ванильный bash даже не читает /etc/bash.bashrc; в основном, в Debian / Ubuntu есть патч для bash, специально предназначенный для поиска, и источник /etc/bash.bashrc при интерактивном запуске bash.
В любом случае, если вы хотите /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