Почему "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 как его оболочка, это то, что происходит, когда пользователь входит в систему:
- Аутентификация происходит. Предполагая, что это удается...
- Оболочка,
/bin/false, вызывается. - Снаряд сразу выходит.
- Поскольку оболочка входа в систему завершена, сеанс входа в систему прекращается.
- Теперь вы вернулись к тому, чтобы быть
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это даже хуже, чем смена оболочки входа в систему, и вы не должны этого делать.
Как описано выше, вам не нужно делать ни одну из этих вещей.