Я использовал терминал некоторое время, а иногда (на самом деле, много раз раз), я использую команду, например:
cp /etc/test ~/testFolder/
, и я получаю эту ошибку :
cp: cannot open `/etc/test` for reading: Permission denied
В тот момент я помню, что я забыл команду sudo
перед ней, поэтому я нажимаю стрелку вверх и затем CTRL kbd> + A kbd> чтобы перейти к началу строки и вставить туда sudo
:
sudo cp /etc/test ~/testFolder/
Есть еще худшие сценарии, когда вы используете vim
для редактирования файла, вы забываете команду sudo
и не делаете Когда вы запускаете программу, вы не видите предупреждение, вы редактируете весь файл и, в конце концов, не можете его сохранить!
Когда вы понимаете, что делаете это так много раз, это становится раздражающим, особенно если вы похожи на меня и привыкли набирать команды без sudo
. Есть способ решить эту проблему, когда вы запускаете терминал, просто наберите sudo su
, чтобы использовать команды от имени пользователя root, но некоторые говорят, что с большей вероятностью будут совершать ошибки, о которых вы будете сожалеть вечно.
У меня вопрос: как лучше всего выполнять команды от имени root? Использовать sudo
и пропускать его каждый раз или автоматически использовать sudo bash
и иметь риск разрушения всей системы?
Лучше всего использовать root только тогда, когда вам это нужно. Используя sudo su
, вы действительно предоставляете дьяволу доступ к царству. Поначалу это меня раздражало, но помня об использовании sudo
перед командой спасла меня от огромных ошибок. У меня был опыт, когда использование sudo su
разрушило все в рабочей среде.
Время рассказа
Мы использовали сервер CentOS для запуска приложения. Сервер был старым и был превращен в виртуальную машину, потому что его оборудование было мертвым / умирающим. У нас произошла рейдовая коррупция и была повреждена виртуальная машина. Наши резервные копии тоже были повреждены, поэтому единственной надеждой на восстановление данных было смонтировать ВМ и попытаться вытащить все это. Я использовал sudo su
и приступил к работе. Я восстановил около 10%, когда случайно запустил неправильную команду, она стерла базу данных, и мы потеряли приложение и все данные. Я никогда больше не бегал sudo su
и не буду. Урок усвоен трудным путем .
Relax. Во-первых, rm -rf *
или что-либо подобное запуску обычного пользователя в вашем домашнем каталоге одинаково катастрофично. Система может быть легко восстановлена, но важны ваши данные. Примерно за пятнадцать лет, когда я использую Linux, у меня не было серьезных катастроф, которых можно было бы избежать, не используя root.
(Ну, если вы системный администратор, особенно на рабочем сервере, то это другой вопрос. Просто стисните зубы и сделайте это правильно; см. Ужасную историю @ jmartin2279 в другом ответе на этот вопрос) .
Во-вторых, если у вас другое приглашение (по умолчанию корневое приглашение заканчивается хешем #
, но вы можете сделать его цветным), это напомнит вам, что вы не работаете как обычный пользователь.
В-третьих, вы умный человек, поэтому регулярно делаете резервные копии. Вы делаете, не так ли? Вы знаете, что они говорят: есть два типа людей: те, кто делает резервные копии, и те, кто будет.
Наконец, сойти с моего газона , в прежние дни у нас не было вонючих su
или sudo
, мы запоминали пароли из двадцати случайных символов каждый месяц, и нам понравилось (а иногда у нас было полчаса чата по одной командной строке перед нажатием «enter»)
Однако vim
всегда предупреждает вас, что вы редактируете файл только для чтения ("/etc/passwd" [readonly]
в статусе линия). Кроме того, если вы не можете записать в файл, вы всегда можете :w /tmp/whatever
.
В те дни, до того как я использовал систему sudo
(читай: древнюю Red Hat), я использовал несколько техник, чтобы напомнить мне, когда я работал от имени пользователя root: красный запрос, «root» в строке заголовка и т. Д. В эти дни я бегу sudo
и не имею быстрых изменений. У меня никогда не было проблем с работой от имени root, которые можно было бы решить, добавив sudo
к команде.
У меня есть ярлык для редактирования файлов. У меня есть скрипт bash, подобный следующему в ~/bin/vi
(и ~/bin
- первая запись в моем $ PATH):
#!/bin/bash
if [[ ! -w "$1" ]]; then
exec sudo vim "$@"
else
exec vim "$@"
fi
Я печатаю это из памяти, так что остерегайтесь ошибок. Идея состоит в том, что если первый файл с именем я не могу записать, он автоматически использует sudo
. Очевидно, что этот подход не идеален, но он был достаточно хорош в течение ряда лет.