Почему "su bind" не работает?

Когда вы делаете apt-get install bind9там пользователь получает bind создано.

У меня проблемы с установкой bind.

Увидеть

для получения дополнительной информации об этом.

Я пытался отладить suиз root пользователю bind (от root потому что я не знаю пароль).

Обычно это работает для любого пользователя.

Но когда я печатаю

su bind

Я не получаю сообщение об ошибке, но пользователь на Bash по-прежнему отображается как root а также whoami также говорит мне, что я все еще root,

Если я делаю то же самое для любого другого пользователя, bash меняет этого пользователя, и whoami также говорит мне, что я этот пользователь.

Итак... Почему я не могу su пользователю bind?

Это то, что выдержка из /etc/passwd:

root@zotac:/etc# cat passwd | grep "bind"
bind:x:107:119::/var/cache/bind:/bin/false

Я пытался заменить /bin/false с /bin/bash, но это не имеет значения. Так в чем проблема?

1 ответ

Решение

Правильно настроенная система, как и ваша, не позволяет успешно входить в систему (даже при su или же sudo -u) как bind, Но вы можете запускать команды как bind - Даже снаряд, если вам нужно.

Почему это происходит (и должно быть)

Пользователь bind это не пользователь, который должен иметь возможность войти в систему. Это дизайн.

bind:x:107:119::/var/cache/bind:/bin/false

/bin/false является bind Вход в оболочку. false не настоящая оболочка, как sh или же bash, Вместо этого он не выполняет никаких действий и сигнализирует вызывающему процессу, что произошел сбой. Настройка пользователя с /bin/false поскольку его оболочка является одним из стандартных способов сделать возможным (потенциально) аутентификацию пользователя для выполнения команд, но невозможно эффективно войти в систему как пользователь. Когда пользователь имеет /bin/false как его оболочка, это то, что происходит, когда пользователь входит в систему:

  1. Аутентификация происходит. Предполагая, что это удается...
  2. Оболочка, /bin/false, вызывается.
  3. Снаряд сразу выходит.
  4. Поскольку оболочка входа в систему завершена, сеанс входа в систему прекращается.
  5. Теперь вы вернулись к тому, чтобы быть root так что команды вроде whoami показать вам как root,

Если вы измените свою конфигурацию, чтобы сделать возможным bind войти в систему, а затем, в зависимости от того, как вы это делаете, и других деталей вашей конфигурации, вы можете сделать вашу систему небезопасной. Вы почти наверняка не должны этого делать.

Почему это происходит даже с /bin/bash Замена /bin/false

Если вы изменили /etc/passwd Непосредственно, я считаю, что возможно, что кэшированные данные не были обновлены. Если вы перезагрузитесь, проблема, скорее всего, будет решена. Но, как объяснялось выше, это не очень хорошая идея. Если вы этого еще не сделали, я рекомендую (осторожно) отредактировать эту строку до первоначальной версии (с /bin/false).

Запуск команд как bind

Вместо этого, если вам действительно нужно запустить команду как пользователь bind использовать sudo запустить конкретную команду:

sudo -u bind command

И если вам действительно нужно запустить оболочку входа в систему как пользователь bind использовать sudo запускать снаряд как bind и сказать оболочке действовать как начальная оболочка входа в систему:

sudo -u bind bash -l

замещать bash с названием оболочки, которую вы хотите использовать, если отличается.

-l флаг делает bash вести себя как оболочка входа (см. man bash). Это соответствует функционально su - bind (увидеть man su) или же sudo -i bind (увидеть man sudo). За исключением оболочки, которую вы указываете (в этом примере bash) работает, а не /bin/false,

Если вы хотите что-то, что соответствует su bind или же sudo -s bind (оболочка, которая не является оболочкой входа в систему и которая в основном содержит переменные окружения вызывающей стороны, включая HOME), но работает /bin/bash вместо /bin/false, используйте эту команду:

sudo -u bind bash

Если по какой-то причине вы хотели использовать su (работает как root) выполнить команду как bind Вы можете сделать это с -c флаг:

su bind -c command

Вещи не делать

  • Можно использовать usermod изменить bind Оболочка из /bin/false к чему-то еще. Это позволило бы администраторам использовать sudo -u -i bind или же sudo -u -s bind, а также root использовать su bind По крайней мере, если все сделано правильно. Но вы почти наверняка не должны этого делать - это нарушает предположение о том, что никто не может войти в систему как bind,
  • Вы даже можете запустить sudo passwd bind установить пароль для bind, так что любой (кроме гостя) может войти как bind с su, если они знают пароль. Это также позволило бы войти как bind на виртуальной консоли, через SSH и, возможно, даже с графическим экраном входа в систему. Установка пароля для bind это даже хуже, чем смена оболочки входа в систему, и вы не должны этого делать.

Как описано выше, вам не нужно делать ни одну из этих вещей.

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