![Существует ли эквивалент BSD для "!!"?](https://rvso.com/image/1267757/%D0%A1%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%20%D0%BB%D0%B8%20%D1%8D%D0%BA%D0%B2%D0%B8%D0%B2%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%20BSD%20%D0%B4%D0%BB%D1%8F%20%22!!%22%3F.png)
Я часто ловлю себя на том, что отдаю приказ, на который у меня нет соответствующих повышенных привилегий.
В Ubuntu я мог бы использовать
sudo !!
Это выдаст ту же команду с привилегиями sudo. Есть ли эквивалент в OpenBSD?
Редактировать: Мне следовало бы более конкретно указать версию OpenBSD. Я использую OpenBSD 4.8, где sudo, похоже, установлено по умолчанию. Я уже создал пользователя помимо root и отредактировал свой файл sudoers, чтобы разрешить этому пользователю использовать sudo.
У меня вопрос: есть ли уже встроенная комбинация клавиш для «!!», чтобы использовать предыдущую команду?
решение1
sudo
— независимый программный пакет, разработка которого началась как минимум за десять лет до Ubuntu или OpenBSD.
Я бы посоветовал вам использовать pkg_add OpenBSD, чтобы добавить его в свою систему, но собственный FAQ OpenBSD дляустановка нового пакетаесть пример, который использует sudo
, поэтому он должен быть уже установлен.
Работает ли !!
отдельно (т.е. без sudo
)? Если нет, возможно, вы настроены на использование другой оболочки, нежели та, что используется в Ubuntu.
решение2
Просто чтобы прояснить все остальные ответы, !!
это часть механизма истории оболочки. Я думаю, проблема не в sudo, а в вашей оболочке, или, точнее, в вашей оболочке, когда вы root.
Прошло много времени с тех пор, как я играл с BSD, но они, как правило, более «традиционные» UNIX, то есть они все еще используют настоящую оболочку Bourne (читай: не такую функциональную, как bash) в качестве оболочки root. «Настоящая» оболочка Bourne в данном случае означает отсутствие механизма истории. Это необходимо для восстановления системы.(*)
При входе в систему как root вы можете запустить оболочку с историей, как exec /bin/bash
вам exec /bin/tcsh
удобно.
Старый трюк заключался в том, чтобы иметь учетную запись root equiv, обычно называемую 'toor', которая имела оболочку входа tcsh или bash, тот же домашний каталог и uid 0. Вы не делали sudo для root, вы бы , sudo toor
а затем были в bash. Я не уверен, что это за новая крутость, может быть
(*) Причина в том, что оболочка root — /sbin/sh, и она статически скомпонована. Это означает, что у нее минимальное количество зависимостей. Если ваша оболочка — /bin/bash, и у нее есть зависимости библиотек от /usr, а теперь /usr gorked, у вас нет оболочки. Если ваша оболочка — /sbin/sh, то, если хотя бы /sbin монтируется, вы можете что-то сделать.
решение3
Этот сайт должен быть вам полезен:http://linux-bsd-sharing.blogspot.com/2009/03/howto-using-sudo-on-freebsd.html
Кроме того, в BSD административные задачи обычно выполняются напрямую из учетной записи пользователя root. В Ubuntu учетная запись администратора root отключена, и все административные задачи выполняются через учетную запись пользователя и проверяются программой sudo.
Когда вы устанавливали BSD, он должен был спросить вас, какой пароль root вы хотите, вы должны иметь возможность войти в систему как root, используя указанный вами пароль. Если локальный вход root отключен в Gnome (или в любом другом месте, которое вы используете в качестве рабочего стола), то вы можете войти как root с помощью команды "su -" в терминале, и он должен попросить вас ввести пароль root. После того, как вы вошли в систему как root, вы можете делать все, что захотите, поскольку эта учетная запись имеет все привилегии.
Обычно не рекомендуется входить в систему как root и запускать все таким образом из соображений безопасности. Любая программа, которую вы запускаете как root, имеет привилегии root. Это означает, что если вы запускаете программу, которая была разработана для удаления всего на вашем жестком диске, у нее есть разрешение сделать это. Вот почему вы всегда должны быть осторожны при входе в систему как root, просто войдите и сделайте то, что вам нужно. Когда вы закончите, вернитесь в свою учетную запись пользователя, просто чтобы быть в безопасности.
решение4
OpenBSD имеет собственную реализацию, встроенную в базовую систему, поэтому, если ваш пользователь указан в файле /etc/sudoers
, то проблема может заключаться в том, что вашей оболочкой, вероятно, является Bourne по умолчанию sh
, которая не обеспечивает той функциональности, к которой вы привыкли в Ubuntu.
Я полагаю, что вы можете установить bash с помощью команды pkg_add -r bash
, а затем настроить его с помощью chsh -s /usr/local/bin/bash
(я считаю, что это правильный путь, я больше знаком с FreeBSD, но мне кажется, что система портов/пакетов в обеих системах похожа).