Как sudo безопаснее, чем напрямую использовать su, если пользователю предоставляется доступ ко всем командам?

Cron по умолчанию отправляет почту пользователю с выходом команд, которые он запускает. Но, как говорится, MAT (Mail Transfer Agent) не установлен, поэтому cron не может отправлять почту и отбрасывает вывод команды. Вы можете перенаправить вывод самостоятельно, в файл или в void (/ dev / null), изменив линию cron на:

47 9,22 * * * cd Travel/lastsecond && scrapy crawl tours > outfile 2>&1

или

47 9,22 * * * cd Travel/lastsecond && scrapy crawl tours > /dev/null 2>&1

Второе возможно, установить MTA (sendmail, postfix или аналогичный) - и настроить его для обработки локальной почты.

Или вы можете убедиться, что ваш скрипт не генерирует никакого вывода.

40
задан 22 February 2018 в 20:44

18 ответов

Лично я не считаю его более безопасным, и большинство преимуществ (sudo) находятся в многопользовательской системе.

Преимущества (в определенном порядке):

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. sudo позволяет контролировать более мелкие зерна. Можно настроить sudo, чтобы предоставить root доступ к некоторым, но не ко всем командам. sudo использует пароль для входа. Это защищает от необходимости вводить пароль root (как и в случае su) и относится к вышеуказанной точке, касающейся более тонкого управления / доступа к корню. В Ubuntu по умолчанию учетная запись root заблокирована. Это сдерживает взломщики при входе в систему (удаленный через ssh), они должны угадать как имя пользователя, так и пароль. Если корневая учетная запись не заблокирована, как в случае с su, тогда им нужно только взломать пароль root. sudo -i, вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Время от времени это происходит, но умеренно эзотерическое. См. Https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells. Некоторые люди считают, что нужно вводить sudo перед каждой командой, которую они хотят запускать с правами root или имеющей время ожидания sudo, позволяет им останавливаться и мыслить более четко и уменьшать свои ошибки или выполнение ошибочных команд. Если это поможет вам, это тоже принесет пользу.

Есть, вероятно, больше преимуществ, но это основные, IMHO.

См. также - https://help.ubuntu.com/community/RootSudo

Чтобы попытаться ответить на некоторые из ваших других соображений:

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. Crackers могут получить доступ к оболочке с помощью ряда методов. Когда вы видите «запустить произвольный код» в уведомлении о безопасности - https://usn.ubuntu.com/usn/ - это означает, что взломщик может запустить / bin / bash или любой другой код. Таким образом, взломщик с помощью различных эксплойтов может получить доступ к оболочке, не зная вашего имени пользователя или пароля. Ни sudo, ни su не помогает в этом. sudo обеспечивает более точное управление зерном. Можно настроить sudo, чтобы дать root доступ к некоторым, но не ко всем командам. Если взломщик имеет доступ к оболочке для учетной записи с правами доступа root, через su или sudo, взломщик может получить доступ root через ряд методов за пределами сфера охвата этого обсуждения. В этом отношении ни судо, ни су не превосходят.

Итак, если вы наблюдаете проблемы или недостатки с помощью sudo, su имеет одинаковые уязвимости, и su не превосходит sudo в этих аспектах, IMHO

40
ответ дан 22 May 2018 в 12:59
  • 1
    Было бы неплохо иметь возможность разрешить управление всеми пользователями (отключить питание и перезагрузку) при включении destop, а не в записи sudoers или иметь имя группы. – mckenzm 21 February 2018 в 06:49
  • 2
    Я считаю, что самым большим преимуществом является необходимость оправдывать каждую команду, поскольку она требует прав суперпользователя. Я нашел в своем раннем опыте работы с Linux, что я, как правило, заканчивал работу как root, по крайней мере, в одном терминале, когда я возился с системой. К сожалению, очень легко выпустить деструктивную команду на терминале по недоразумениям или ошибкам. Если это было в «корневом терминале», это может привести к восстановлению из резервной копии или переустановке. Судо защитил меня от этого много раз! – rolinger 21 February 2018 в 13:32
  • 3
    Не компрометируя пароль root, возможно, самое большое преимущество sudo. Вы можете дать root-разрешение, не раскрывая никаких секретов. – Thorbjørn Ravn Andersen 21 February 2018 в 14:09
  • 4
    Вы можете не только ограничивать команды, но даже ограничивать указанные аргументы. Но я не согласен с тем, что корень, запертый, имеет к нему какое-либо отношение; потому что вы можете настроить ssh, чтобы не разрешать вход в систему root. Есть что-то еще, но с su по сравнению с sudo: sudo вы используете свой пароль пользователя, который представляет собой меньшее количество паролей, которые могут быть скомпрометированы, и это, как правило, не очень хорошо. Как и все в этом мире, есть разные способы пойти по чем-то, и это не означает, что один из способов является более правильным, чем остальные 100% времени, если когда-либо. Тогда есть предпочтения. – Pryftan 21 February 2018 в 23:34
  • 5
    Но otoh, если больше одного пользователя, нуждающегося в корневом доступе (это не то, что я получаю, потому что это просто ... ну, в лучшем случае это горячая дискуссия), тогда у sudo есть преимущество. – Pryftan 21 February 2018 в 23:35

Лично я не считаю его более безопасным, и большинство преимуществ (sudo) находятся в многопользовательской системе.

Преимущества (в определенном порядке):

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. sudo позволяет контролировать более мелкие зерна. Можно настроить sudo, чтобы предоставить root доступ к некоторым, но не ко всем командам. sudo использует пароль для входа. Это защищает от необходимости вводить пароль root (как и в случае su) и относится к вышеуказанной точке, касающейся более тонкого управления / доступа к корню. В Ubuntu по умолчанию учетная запись root заблокирована. Это сдерживает взломщики при входе в систему (удаленный через ssh), они должны угадать как имя пользователя, так и пароль. Если корневая учетная запись не заблокирована, как в случае с su, тогда им нужно только взломать пароль root. sudo -i, вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Время от времени это происходит, но умеренно эзотерическое. См. Https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells. Некоторые люди считают, что нужно вводить sudo перед каждой командой, которую они хотят запускать с правами root или имеющей время ожидания sudo, позволяет им останавливаться и мыслить более четко и уменьшать свои ошибки или выполнение ошибочных команд. Если это поможет вам, это тоже принесет пользу.

Есть, вероятно, больше преимуществ, но это основные, IMHO.

См. также - https://help.ubuntu.com/community/RootSudo

Чтобы попытаться ответить на некоторые из ваших других соображений:

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. Crackers могут получить доступ к оболочке с помощью ряда методов. Когда вы видите «запустить произвольный код» в уведомлении о безопасности - https://usn.ubuntu.com/usn/ - это означает, что взломщик может запустить / bin / bash или любой другой код. Таким образом, взломщик с помощью различных эксплойтов может получить доступ к оболочке, не зная вашего имени пользователя или пароля. Ни sudo, ни su не помогает в этом. sudo обеспечивает более точное управление зерном. Можно настроить sudo, чтобы дать root доступ к некоторым, но не ко всем командам. Если взломщик имеет доступ к оболочке для учетной записи с правами доступа root, через su или sudo, взломщик может получить доступ root через ряд методов за пределами сфера охвата этого обсуждения. В этом отношении ни судо, ни су не превосходят.

Итак, если вы наблюдаете проблемы или недостатки с помощью sudo, su имеет одинаковые уязвимости, и su не превосходит sudo в этих аспектах, IMHO

40
ответ дан 17 July 2018 в 20:20

Лично я не считаю его более безопасным, и большинство преимуществ (sudo) находятся в многопользовательской системе.

Преимущества (в определенном порядке):

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. sudo позволяет контролировать более мелкие зерна. Можно настроить sudo, чтобы предоставить root доступ к некоторым, но не ко всем командам. sudo использует пароль для входа. Это защищает от необходимости вводить пароль root (как и в случае su) и относится к вышеуказанной точке, касающейся более тонкого управления / доступа к корню. В Ubuntu по умолчанию учетная запись root заблокирована. Это сдерживает взломщики при входе в систему (удаленный через ssh), они должны угадать как имя пользователя, так и пароль. Если корневая учетная запись не заблокирована, как в случае с su, тогда им нужно только взломать пароль root. sudo -i, вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Время от времени это происходит, но умеренно эзотерическое. См. Https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells. Некоторые люди считают, что нужно вводить sudo перед каждой командой, которую они хотят запускать с правами root или имеющей время ожидания sudo, позволяет им останавливаться и мыслить более четко и уменьшать свои ошибки или выполнение ошибочных команд. Если это поможет вам, это тоже принесет пользу.

Есть, вероятно, больше преимуществ, но это основные, IMHO.

См. также - https://help.ubuntu.com/community/RootSudo

Чтобы попытаться ответить на некоторые из ваших других соображений:

sudo имеет превосходную регистрацию. sudo регистрирует каждую команду. Crackers могут получить доступ к оболочке с помощью ряда методов. Когда вы видите «запустить произвольный код» в уведомлении о безопасности - https://usn.ubuntu.com/usn/ - это означает, что взломщик может запустить / bin / bash или любой другой код. Таким образом, взломщик с помощью различных эксплойтов может получить доступ к оболочке, не зная вашего имени пользователя или пароля. Ни sudo, ни su не помогает в этом. sudo обеспечивает более точное управление зерном. Можно настроить sudo, чтобы дать root доступ к некоторым, но не ко всем командам. Если взломщик имеет доступ к оболочке для учетной записи с правами доступа root, через su или sudo, взломщик может получить доступ root через ряд методов за пределами сфера охвата этого обсуждения. В этом отношении ни судо, ни су не превосходят.

Итак, если вы наблюдаете проблемы или недостатки с помощью sudo, su имеет одинаковые уязвимости, и su не превосходит sudo в этих аспектах, IMHO

40
ответ дан 23 July 2018 в 21:02

Представьте, что у вас есть 20 минут, чтобы сделать что-то сложное. Вы немного похмелье, и вам нужно спешить. «Давайте используем su», вы говорите. «Это сэкономит время» - это ваши рассуждения.

Вы случайно нажимаете

rm -rf /*

вместо

rm -rf ./*

Ваша система теперь сжимает себя, и у вас есть 10 минут до вашего крайнего срока.

Если вы явно выбираете, когда вам нужен root, вы можете свести к минимуму вероятность этого. Корень может не понадобиться для rm -r ./*, так зачем использовать его? Зачем рисковать?

Вот что означает «безопасность». Минимизация риска пользователей (всех пользователей, а не только начинающих), совершивших роковую ошибку.

Конечно, это экстремальный пример, который нельзя допускать в производственной среде (я гарантирую, что он произошло в среде prod).

Безопасность мудрая, есть кое-что, что sudo лучше для тоже. Как говорит @Panther - регистрация, ограничения, пароль root - SPOF и т. Д.)

9
ответ дан 22 May 2018 в 12:59
  • 1
    Черт, вам не нужно так долго ждать, если вы просто сделаете ... chown -R nobody:nobody / или даже chown -R nobody ../ как root. chmod , конечно, имеет аналогичные проблемы и в рекурсивном режиме. Но самое лучшее, что вы делаете, это то, что вы должны быть только root, когда вам это нужно; тем меньше привилегий ваш логин лучше для нормального использования. – Pryftan 21 February 2018 в 23:38
  • 2
    +1 для программирования, когда вы похмелье. – dog0 22 February 2018 в 12:19
  • 3
    Итак, как это отличается от sudo? Вы пишете sudo rm -rf /* вместо sudo rm -rf ./* и снова стреляете. – ilkkachu 22 February 2018 в 14:58
  • 4
    @ilkkachu с точки зрения фактической команды, она делает минимальную разницу в том, что происходит. Но вам нужно было явно указать, что вы хотите сделать это как root. В этом-то и дело. Безопасность связана с управлением рисками. Конечно, вы все равно можете использовать систему. Но чем меньше у вас привилегий root, тем меньше вероятность совершить роковую ошибку. Безопасность сводится к минимизации вероятностей. – dijksterhuis 22 February 2018 в 15:26
  • 5
    @ilkkachu no sudo vs su не защищает вас. Однако лучшие практики. Это моя цель. В моем примере я был ленив и использовал su для всего. Это не лучшая практика. Поэтому почему это рискованно. – dijksterhuis 22 February 2018 в 17:05

Я хочу добавить немного исторической перспективы к другим ответам. К сожалению, у меня нет источников, кроме моих собственных воспоминаний об обсуждениях Usenet и журнальных статьях.

Некоторое время назад, в 1990-х годах, дистрибутивы упрощали установку Linux на ваше собственное оборудование, даже с небольшим количеством компьютерных знаний. Таким образом, Linux начал привлекать все больше и больше людей, которые на удивление ранее не были пробурены как системные администраторы на каком-то диалекте UN * X. Вместо этого многие были использованы для (одиночных пользователей) систем, таких как Windows 95/98. И они узнали, что большинство задач администрирования Linux потребовали работы под этой странной «корневой» учетной записью.

Таким образом, некоторые пользователи просто вошли в систему под именем root и использовали эту учетную запись для своей повседневной работы. Зачем им нужно снова вводить su и пароль root или входить в новый tty только для некоторых команд администратора? Но использование root для всего - это, конечно, не очень хорошая идея, так как вы могли бы нанести гораздо больший вред вашей системе с помощью некорректной команды в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это SuSE?) Изменили фон рабочего стола для пользователя root, чтобы отобразить большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.

Итак, путь Ubuntu с [ f2] имеет некоторые преимущества (в дополнение к тем, которые уже перечислены Panther).

Вы не можете напрямую войти в учетную запись root.² :-) В процессе установки не будет запрашиваться (дополнительный) пароль root , вам нужен только один (ваш пользовательский) пароль. sudo кэширует ваши учетные данные, поэтому для нескольких команд администратора в последовательности вам нужно только ввести пароль один раз (в отличие от su). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root. И это упрощает рассказывать пользователям онлайн и в документации, какие команды они должны вводить как admin, а какие нет .³

¹ И для тех, кто не смеет это делать сам, были установлены партии. ² Но вы root используете команду, подобную sudo -i или sudo su - root, чтобы получить корневую оболочку после входа в систему как обычный пользователь. ³ Но вы знаете, конечно, что вы перечислены Пантером , верно?

9
ответ дан 22 May 2018 в 12:59
  • 1
    Вы говорите в Ubuntu, что вы не можете сделать: sudo su - или sudo su - root ? Потому что я видел подобные формулы, например. что у MacOS X нет корня, но это совершенно неправильно, когда нужна только первая команда ... – Pryftan 21 February 2018 в 23:41
  • 2
    Конечно, существует учетная запись root . Я сказал, что вы не можете «прямо войти», то есть вы не можете ввести пользователя root и пароль в приглашении входа в систему или в диалоговом окне входа в систему X и начать свой сеанс как root. Но вы можете использовать одна из ваших команд (я предпочитаю sudo -i, поскольку она короче, и я ленив), чтобы получить корневую оболочку. – Dubu 21 February 2018 в 23:48
  • 3
    Пожалуйста, прочитайте мой комментарий еще раз :) Я сказал, что говорят, что у MacOS X нет учетной записи root, но на самом деле это , и это напомнило мне об этом (я не приравнивал ее к отсутствию корня счет в Ubuntu). Но для всех, кого я знаю, разработчики в Ubuntu были достаточно сумасшедшими, чтобы исправлять sudo, чтобы не допустить этого, следовательно, моего вопроса. – Pryftan 22 February 2018 в 00:04
  • 4
    @Pryftan Как я уже сказал в своем комментарии выше, обе ваши команды работают, и вы получите корневую оболочку. Я добавлю это к моему ответу. – Dubu 22 February 2018 в 11:50
  • 5
    Да. Я знаю, что :) Я не говорил, что это неверно, или нет. Я говорил, что это напомнило мне кое-что, что говорят некоторые, но неверно говорить. Отсюда и смелость. – Pryftan 23 February 2018 в 20:49

В течение десятилетий можно было отключить регистрацию root через ssh. Способ Ubuntu отключить учетную запись root и заставить людей делать все это не что иное, как трюк. Просто «sudo -s», и у вас есть корневая оболочка. Отключите вход в систему через ssh и оставьте его там.

2
ответ дан 22 May 2018 в 12:59
  • 1
    ... на этой ноте, переходя к ключевым словам только для ЛЮБОГО входа в систему ssh, а не только для учетной записи root, это отличная практика. – rackandboneman 21 February 2018 в 11:30
  • 2
    Да. Я заметил это в комментарии всего несколько минут назад. Otoh, будучи наименее привилегированным, лучше всех, поэтому только повышайте, когда вам нужно, и это касается того, вошли ли вы в ssh или локально. И то, что говорит @rackandboneman, конечно, абсолютно верно, хотя для меня я отключил удаленную корневую остановку даже с ключами ssh независимо от системы. – Pryftan 21 February 2018 в 23:42

В зависимости от конфигурации sudo <game ending command> не обязательно будет работать. Конечно, если конфигурация sudoers читает «user ALL = (ALL) ALL», sudo не будет предлагать дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно запускать часто, например, устанавливать новые пакеты, и оставлять опасные команды, такие как rm.

Таким образом, вы можете запускать все команды, если вы входите в систему как , но поскольку вам это потребуется только время от времени, риск запуска <game ending command> будет значительно уменьшен.

0
ответ дан 22 May 2018 в 12:59
  • 1
    И конкретные аргументы в командах тоже. – Pryftan 21 February 2018 в 23:43
  • 2
    И для каждой группы, а не для пользователя. использование групп неоценимо в многопользовательских средах, сотрудники могут приходить и уходить и где вам могут понадобиться определенные роли. – Panther 22 February 2018 в 20:05

Это sudo позволяет вам разрешать только определенные команды - это не единственное преимущество sudo over su.

В большинстве магазинов это даже не самое важное преимущество.

С помощью sudo вы знаете, кто выполнил определенную команду.

Теперь, может быть, Это важно для вас. Например, вы можете быть единственным пользователем вашего компьютера. Если это так, то sudo, возможно, не лучше, чем su.

Но у большого количества хостов более одного администратора.

sudo тогда становится очень полезным, потому что если кто-то делает неправильную вещь , sudo позволяет узнать, кто это сделал.

Это позволяет вам понять, почему произошли ошибки, а также обучить людей предотвращать повторяющиеся ошибки или, при необходимости, удалять инструменты у кого-то.

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

Судо не совершенен.

Если два человека одновременно выполняют «sudo sh», тогда может быть сложно присвоить команды одному или другому.

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

sudo не обязательно останавливает глупое или злонамеренное действие по всем причинам, указанным в оригинале вопрос.

Но это дает вам гораздо больше шансов предотвратить повторение.

0
ответ дан 22 May 2018 в 12:59
  • 1
    1. Только если вы потратите время на его правильную настройку. Какая система Ubuntu по умолчанию не выполняет (и не может делать). 2. Только если у пользователя нет возможности редактировать журналы после факта, которые они могут, если только команды, которые они могут запускать, ограничены. (Которое не используется в случае использования Ubuntu по умолчанию) – ilkkachu 22 February 2018 в 15:00
  • 2
    @ilkkachu, хотя у вас есть хорошие моменты, ваш аргумент здесь здесь не имеет смысла. Дело не в настройках по умолчанию, точнее, можно настроить и точно настроить sudo. Вы не можете настроить su для выполнения этих действий вообще. su is or or none, нет возможности ограничить команды, и на самом деле sudo обеспечивает превосходное ведение журнала. Ни su, ни sudo не предлагают никакой защиты от того, что взломщик может или не может сделать на скомпрометированной системе, и никто не держал это так. Журналы sudo имеют большое значение в обычных повседневных операциях. – Panther 22 February 2018 в 19:58
  • 3
    @Panther, ну, заголовок вопроса говорит «... если пользователю предоставлен доступ ко всем командам» " поэтому я предположил, что они подразумевают обычную конфигурацию Ubuntu по умолчанию, где sudo позволяет все. Конечно, вы можете настроить его для ограничения команд, которые пользователь может запустить, но я не думаю, что это так в вопросе, как было задано. – ilkkachu 22 February 2018 в 20:32
  • 4
    Ответ расширен. – Ben Aveling 25 February 2018 в 10:39
  • 5
    @ilkkachu - перечитайте мой ответ " Лично я не обязательно считаю его более безопасным, и большинство преимуществ (sudo) находятся в многопользовательской системе. В одной пользовательской системе, вероятно, это стирка. & Quot; Затем я продолжил объяснять другие преимущества sudo, один из которых заключается в том, что он настраивается. – Panther 1 March 2018 в 19:50

Это sudo позволяет вам разрешать только определенные команды - это не единственное преимущество sudo over su.

В большинстве магазинов это даже не самое важное преимущество.

С помощью sudo вы знаете, кто выполнил определенную команду.

Теперь, может быть, Это важно для вас. Например, вы можете быть единственным пользователем вашего компьютера. Если это так, то sudo, возможно, не лучше, чем su.

Но у большого количества хостов более одного администратора.

sudo тогда становится очень полезным, потому что если кто-то делает неправильную вещь , sudo позволяет узнать, кто это сделал.

Это позволяет вам понять, почему произошли ошибки, а также обучить людей предотвращать повторяющиеся ошибки или, при необходимости, удалять инструменты у кого-то.

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

Судо не совершенен.

Если два человека одновременно выполняют «sudo sh», тогда может быть сложно присвоить команды одному или другому.

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

sudo не обязательно останавливает глупое или злонамеренное действие по всем причинам, указанным в оригинале вопрос.

Но это дает вам гораздо больше шансов предотвратить повторение.

0
ответ дан 17 July 2018 в 20:20

Представьте, что у вас есть 20 минут, чтобы сделать что-то сложное. Вы немного похмелье, и вам нужно спешить. «Давайте используем su», вы говорите. «Это сэкономит время» - это ваши рассуждения.

Вы случайно нажимаете

rm -rf /*

вместо

rm -rf ./*

Ваша система теперь сжимает себя, и у вас есть 10 минут до вашего крайнего срока.

Если вы явно выбираете, когда вам нужен root, вы можете свести к минимуму вероятность этого. Корень может не понадобиться для rm -r ./*, так зачем использовать его? Зачем рисковать?

Вот что означает «безопасность». Минимизация риска пользователей (всех пользователей, а не только начинающих), совершивших роковую ошибку.

Конечно, это экстремальный пример, который нельзя допускать в производственной среде (я гарантирую, что он произошло в среде prod).

Безопасность мудрая, есть кое-что, что sudo лучше для тоже. Как говорит @Panther - регистрация, ограничения, пароль root - SPOF и т. Д.)

9
ответ дан 17 July 2018 в 20:20

В зависимости от конфигурации sudo <game ending command> не обязательно будет работать. Конечно, если конфигурация sudoers читает «user ALL = (ALL) ALL», sudo не будет предлагать дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно запускать часто, например, устанавливать новые пакеты, и оставлять опасные команды, такие как rm.

Таким образом, вы можете запускать все команды, если вы входите в систему как root, но поскольку вам это потребуется только время от времени, риск запуска <game ending command> будет значительно уменьшен.

0
ответ дан 17 July 2018 в 20:20

Я хочу добавить немного исторической перспективы к другим ответам. К сожалению, у меня нет источников, кроме моих собственных воспоминаний об обсуждениях Usenet и журнальных статьях.

Некоторое время назад, в 1990-х годах, дистрибутивы упрощали установку Linux на ваше собственное оборудование, даже с небольшим количеством компьютерных знаний. Таким образом, Linux начал привлекать все больше и больше людей, которые на удивление ранее не были пробурены как системные администраторы на каком-то диалекте UN * X. Вместо этого многие были использованы для (одиночных пользователей) систем, таких как Windows 95/98. И они узнали, что большинство задач администрирования Linux потребовали работы под этой странной «корневой» учетной записью.

Таким образом, некоторые пользователи просто вошли в систему под именем root и использовали эту учетную запись для своей повседневной работы. Зачем им нужно снова вводить su и пароль root или входить в новый tty только для некоторых команд администратора? Но использование root для всего - это, конечно, не очень хорошая идея, так как вы могли бы нанести гораздо больший вред вашей системе с помощью некорректной команды в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это SuSE?) Изменили фон рабочего стола для пользователя root, чтобы отобразить большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.

Итак, путь Ubuntu с sudo имеет некоторые преимущества (в дополнение к тем, которые уже перечислены Panther).

Вы не можете напрямую войти в учетную запись root.² :-) В процессе установки не будет запрашиваться (дополнительный) пароль root , вам нужен только один (ваш пользовательский) пароль. sudo кэширует ваши учетные данные, поэтому для нескольких команд администратора в последовательности вам нужно только ввести пароль один раз (в отличие от su). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root. И это упрощает рассказывать пользователям онлайн и в документации, какие команды они должны вводить как admin, а какие нет .³

¹ И для тех, кто не смеет это делать сам, были установлены партии. ² Но вы root используете команду, подобную sudo -i или sudo su - root, чтобы получить корневую оболочку после входа в систему как обычный пользователь. ³ Но вы знаете, конечно, что вы перечислены Пантером , верно?

9
ответ дан 17 July 2018 в 20:20

В течение десятилетий можно было отключить регистрацию root через ssh. Способ Ubuntu отключить учетную запись root и заставить людей делать все это не что иное, как трюк. Просто «sudo -s», и у вас есть корневая оболочка. Отключите вход в систему через ssh и оставьте его там.

2
ответ дан 17 July 2018 в 20:20

Это sudo позволяет вам разрешать только определенные команды - это не единственное преимущество sudo over su.

В большинстве магазинов это даже не самое важное преимущество.

С помощью sudo вы знаете, кто выполнил определенную команду.

Теперь, может быть, Это важно для вас. Например, вы можете быть единственным пользователем вашего компьютера. Если это так, то sudo, возможно, не лучше, чем su.

Но у большого количества хостов более одного администратора.

sudo тогда становится очень полезным, потому что если кто-то делает неправильную вещь , sudo позволяет узнать, кто это сделал.

Это позволяет вам понять, почему произошли ошибки, а также обучить людей предотвращать повторяющиеся ошибки или, при необходимости, удалять инструменты у кого-то.

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

Судо не совершенен.

Если два человека одновременно выполняют «sudo sh», тогда может быть сложно присвоить команды одному или другому.

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

sudo не обязательно останавливает глупое или злонамеренное действие по всем причинам, указанным в оригинале вопрос.

Но это дает вам гораздо больше шансов предотвратить повторение.

0
ответ дан 23 July 2018 в 21:02
  • 1
    1. Только если вы потратите время на его правильную настройку. Какая система Ubuntu по умолчанию не выполняет (и не может делать). 2. Только если у пользователя нет возможности редактировать журналы после факта, которые они могут, если только команды, которые они могут запускать, ограничены. (Которое не используется в случае использования Ubuntu по умолчанию) – ilkkachu 22 February 2018 в 15:00
  • 2
    @ilkkachu, хотя у вас есть хорошие моменты, ваш аргумент здесь здесь не имеет смысла. Дело не в настройках по умолчанию, точнее, можно настроить и точно настроить sudo. Вы не можете настроить su для выполнения этих действий вообще. su is or or none, нет возможности ограничить команды, и на самом деле sudo обеспечивает превосходное ведение журнала. Ни su, ни sudo не предлагают никакой защиты от того, что взломщик может или не может сделать на скомпрометированной системе, и никто не держал это так. Журналы sudo имеют большое значение в обычных повседневных операциях. – Panther 22 February 2018 в 19:58
  • 3
    @Panther, ну, заголовок вопроса говорит «... если пользователю предоставлен доступ ко всем командам» & quot; поэтому я предположил, что они подразумевают обычную конфигурацию Ubuntu по умолчанию, где sudo позволяет все. Конечно, вы можете настроить его для ограничения команд, которые пользователь может запустить, но я не думаю, что это так в вопросе, как было задано. – ilkkachu 22 February 2018 в 20:32
  • 4
    Ответ расширен. – Ben Aveling 25 February 2018 в 10:39
  • 5
    @ilkkachu - перечитайте мой ответ & quot; Лично я не обязательно считаю его более безопасным, и большинство преимуществ (sudo) находятся в многопользовательской системе. В одной пользовательской системе, вероятно, это стирка. & Quot; Затем я продолжил объяснять другие преимущества sudo, один из которых заключается в том, что он настраивается. – Panther 1 March 2018 в 19:50

Представьте, что у вас есть 20 минут, чтобы сделать что-то сложное. Вы немного похмелье, и вам нужно спешить. «Давайте используем su», вы говорите. «Это сэкономит время» - это ваши рассуждения.

Вы случайно нажимаете

rm -rf /*

вместо

rm -rf ./*

Ваша система теперь сжимает себя, и у вас есть 10 минут до вашего крайнего срока.

Если вы явно выбираете, когда вам нужен root, вы можете свести к минимуму вероятность этого. Корень может не понадобиться для rm -r ./*, так зачем использовать его? Зачем рисковать?

Вот что означает «безопасность». Минимизация риска пользователей (всех пользователей, а не только начинающих), совершивших роковую ошибку.

Конечно, это экстремальный пример, который нельзя допускать в производственной среде (я гарантирую, что он произошло в среде prod).

Безопасность мудрая, есть кое-что, что sudo лучше для тоже. Как говорит @Panther - регистрация, ограничения, пароль root - SPOF и т. Д.)

9
ответ дан 23 July 2018 в 21:02
  • 1
    Черт, вам не нужно так долго ждать, если вы просто сделаете ... chown -R nobody:nobody / или даже chown -R nobody ../ как root. chmod , конечно, имеет аналогичные проблемы и в рекурсивном режиме. Но самое лучшее, что вы делаете, это то, что вы должны быть только root, когда вам это нужно; тем меньше привилегий ваш логин лучше для нормального использования. – Pryftan 21 February 2018 в 23:38
  • 2
    +1 для программирования, когда вы похмелье. – dog0 22 February 2018 в 12:19
  • 3
    Итак, как это отличается от sudo? Вы пишете sudo rm -rf /* вместо sudo rm -rf ./* и снова стреляете. – ilkkachu 22 February 2018 в 14:58
  • 4
    @ilkkachu с точки зрения фактической команды, она делает минимальную разницу в том, что происходит. Но вам нужно было явно указать, что вы хотите сделать это как root. В этом-то и дело. Безопасность связана с управлением рисками. Конечно, вы все равно можете использовать систему. Но чем меньше у вас привилегий root, тем меньше вероятность совершить роковую ошибку. Безопасность сводится к минимизации вероятностей. – dijksterhuis 22 February 2018 в 15:26
  • 5
    @ilkkachu no sudo vs su не защищает вас. Однако лучшие практики. Это моя цель. В моем примере я был ленив и использовал su для всего. Это не лучшая практика. Поэтому почему это рискованно. – dijksterhuis 22 February 2018 в 17:05

В зависимости от конфигурации sudo <game ending command> не обязательно будет работать. Конечно, если конфигурация sudoers читает «user ALL = (ALL) ALL», sudo не будет предлагать дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно запускать часто, например, устанавливать новые пакеты, и оставлять опасные команды, такие как rm.

Таким образом, вы можете запускать все команды, если вы входите в систему как root, но поскольку вам это потребуется только время от времени, риск запуска <game ending command> будет значительно уменьшен.

0
ответ дан 23 July 2018 в 21:02
  • 1
    И конкретные аргументы в командах тоже. – Pryftan 21 February 2018 в 23:43
  • 2
    И для каждой группы, а не для пользователя. использование групп неоценимо в многопользовательских средах, сотрудники могут приходить и уходить и где вам могут понадобиться определенные роли. – Panther 22 February 2018 в 20:05

Я хочу добавить немного исторической перспективы к другим ответам. К сожалению, у меня нет источников, кроме моих собственных воспоминаний об обсуждениях Usenet и журнальных статьях.

Некоторое время назад, в 1990-х годах, дистрибутивы упрощали установку Linux на ваше собственное оборудование, даже с небольшим количеством компьютерных знаний. Таким образом, Linux начал привлекать все больше и больше людей, которые на удивление ранее не были пробурены как системные администраторы на каком-то диалекте UN * X. Вместо этого многие были использованы для (одиночных пользователей) систем, таких как Windows 95/98. И они узнали, что большинство задач администрирования Linux потребовали работы под этой странной «корневой» учетной записью.

Таким образом, некоторые пользователи просто вошли в систему под именем root и использовали эту учетную запись для своей повседневной работы. Зачем им нужно снова вводить su и пароль root или входить в новый tty только для некоторых команд администратора? Но использование root для всего - это, конечно, не очень хорошая идея, так как вы могли бы нанести гораздо больший вред вашей системе с помощью некорректной команды в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это SuSE?) Изменили фон рабочего стола для пользователя root, чтобы отобразить большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.

Итак, путь Ubuntu с sudo имеет некоторые преимущества (в дополнение к тем, которые уже перечислены Panther).

Вы не можете напрямую войти в учетную запись root.² :-) В процессе установки не будет запрашиваться (дополнительный) пароль root , вам нужен только один (ваш пользовательский) пароль. sudo кэширует ваши учетные данные, поэтому для нескольких команд администратора в последовательности вам нужно только ввести пароль один раз (в отличие от su). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root. И это упрощает рассказывать пользователям онлайн и в документации, какие команды они должны вводить как admin, а какие нет .³

¹ И для тех, кто не смеет это делать сам, были установлены партии. ² Но вы root используете команду, подобную sudo -i или sudo su - root, чтобы получить корневую оболочку после входа в систему как обычный пользователь. ³ Но вы знаете, конечно, что вы перечислены Пантером , верно?

9
ответ дан 23 July 2018 в 21:02
  • 1
    Вы говорите в Ubuntu, что вы не можете сделать: sudo su - или sudo su - root ? Потому что я видел подобные формулы, например. что у MacOS X нет корня, но это совершенно неправильно, когда нужна только первая команда ... – Pryftan 21 February 2018 в 23:41
  • 2
    Конечно, существует учетная запись root . Я сказал, что вы не можете «прямо войти», то есть вы не можете ввести пользователя root и пароль в приглашении входа в систему или в диалоговом окне входа в систему X и начать свой сеанс как root. Но вы можете использовать одна из ваших команд (я предпочитаю sudo -i, поскольку она короче, и я ленив), чтобы получить корневую оболочку. – Dubu 21 February 2018 в 23:48
  • 3
    Пожалуйста, прочитайте мой комментарий еще раз :) Я сказал, что говорят, что у MacOS X нет учетной записи root, но на самом деле это , и это напомнило мне об этом (я не приравнивал ее к отсутствию корня счет в Ubuntu). Но для всех, кого я знаю, разработчики в Ubuntu были достаточно сумасшедшими, чтобы исправлять sudo, чтобы не допустить этого, следовательно, моего вопроса. – Pryftan 22 February 2018 в 00:04
  • 4
    @Pryftan Как я уже сказал в своем комментарии выше, обе ваши команды работают, и вы получите корневую оболочку. Я добавлю это к моему ответу. – Dubu 22 February 2018 в 11:50
  • 5
    Да. Я знаю, что :) Я не говорил, что это неверно, или нет. Я говорил, что это напомнило мне кое-что, что говорят некоторые, но неверно говорить. Отсюда и смелость. – Pryftan 23 February 2018 в 20:49

В течение десятилетий можно было отключить регистрацию root через ssh. Способ Ubuntu отключить учетную запись root и заставить людей делать все это не что иное, как трюк. Просто «sudo -s», и у вас есть корневая оболочка. Отключите вход в систему через ssh и оставьте его там.

2
ответ дан 23 July 2018 в 21:02
  • 1
    ... на этой ноте, переходя к ключевым словам только для ЛЮБОГО входа в систему ssh, а не только для учетной записи root, это отличная практика. – rackandboneman 21 February 2018 в 11:30
  • 2
    Да. Я заметил это в комментарии всего несколько минут назад. Otoh, будучи наименее привилегированным, лучше всех, поэтому только повышайте, когда вам нужно, и это касается того, вошли ли вы в ssh или локально. И то, что говорит @rackandboneman, конечно, абсолютно верно, хотя для меня я отключил удаленную корневую остановку даже с ключами ssh независимо от системы. – Pryftan 21 February 2018 в 23:42

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

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