То, как делает command-not-found, определяет, является ли пользователь администратором

Я - администратор двух серверов человечности. На одном из них, когда я пытаюсь выполнить команду (например, irb1.9.1) от пакета, который не установлен, я получаю следующее сообщение:

The program 'irb1.9.1' is currently not installed.  You can install it by typing:
sudo apt-get install ruby1.9.1

На другом сервере я получаю следующий ответ:

The program 'irb1.9.1' is currently not installed.  To run 'irb1.9.1' please ask your administrator to install the package 'ruby1.9.1'

Я могу sudo на обоих серверах, таким образом, я не понимаю, как первый знает, что я могу установить пакет сам и показываю мне команду для выполнения, в то время как второе не делает.

Куда различие прибывает из и как я могу заставить второй сервер давать мне команду как первый сервер?

Редактирование для ответа на комментарий Braiam, apt-cache policy возвратите то же на обоих серверах:

$ apt-cache policy command-not-found
command-not-found:
  Installed: 0.3ubuntu7.1
  Candidate: 0.3ubuntu7.1
  Version table:
 *** 0.3ubuntu7.1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ raring-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     0.3ubuntu7 0
        500 http://dk.archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
1
задан 16 October 2013 в 00:57

2 ответа

Исследуя тему немного больше, я нашел это command-not-found использовал /usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.py сценарий, который содержит следующую строку:

self.user_can_sudo = grp.getgrnam("sudo")[2] in posix.getgroups() or grp.getgrnam("admin")[2] in posix.getgroups()

Так в основном любой в sudo или admin группы рассмотрят как администратора. Одна из машин была настроена для использования wheel группа вместо этого, таким образом, visudo показал бы:

%wheel ALL=(ALL) ALL

На сервере я не был членом sudo или admin группы, таким образом, command-not-found не знал бы, что я мог выполниться apt-get команды с sudo. После добавления меня к sudo группа также, я теперь добираюсь, Кв. - заставляют команду выполняться распечатанный на терминале.

0
ответ дан 16 October 2013 в 00:57

Разница, вероятно, возникает из-за того, что вы используете разные версии bash или разные оболочки. Используйте:

echo $SHELL
bash --version

, чтобы проверить текущую оболочку и / или текущую версию bash.

0
ответ дан 16 October 2013 в 00:57

Другие вопросы по тегам:

Похожие вопросы: