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

Я администратор двух серверов Ubuntu. На одном из них, когда я пытаюсь запустить команду (например, 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 на обоих серверах, поэтому я не понимаю, как первый узнает, что я могу установить пакет самостоятельно, и показывает мне команду для запуска, а второй нет. «т.

Откуда эта разница и как я могу заставить второй сервер дать мне команду, подобную первому серверу?

Редактировать , чтобы ответить на комментарий Брайама, [115 ] возвращает одинаковое на обоих серверах:

$ 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.04.2020, 00:35

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 или [115 ] группы будут считаться администраторами. Одна из машин была настроена на использование группы wheel, поэтому visudo покажет:

%wheel ALL=(ALL) ALL

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

0
ответ дан 16.04.2020, 00:37

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

echo $SHELL
bash --version

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

0
ответ дан 16.04.2020, 00:36

Теги

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