Почему у меня нет пароля для “su”? Проблемы с “sudo”

Я установил Ubuntu с помощью GUI, дав мне пароль и все. Я запутанно не помню процесс. Однако то, что волнует меня, - то, что я не знаю следующего пароля:

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

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

starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine> 
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

Я просто немного смущен. Как я могу заблокировать меня как это? Я думаю sudo ключевая команда здесь. Но я делаю foobs файл, столь открытый, как это может возможно быть через chmod, итак, почему это блокирует меня?

34
задан 8 April 2014 в 12:21

2 ответа

По умолчанию суперпользователь (root) учетная запись отключена и не имеет никакого пароля. Можно создать один путем выполнения:

$ sudo passwd root

Вы тогда будете в состоянии войти в систему как корень путем выполнения su использование этого пароля.

Что касается chmod, корректная команда была бы:

$ chmod 777 -R foobs

можно также использовать:

$ sudo -i

для входа в систему как корень с помощью пароля (не создавая пароль root, как описано выше).

49
ответ дан 16 November 2019 в 11:02

1. Почему у Вас нет пароля root

В то время как можно создать пароль для учетной записи суперпользователя, разрешающей Вам входить в систему как корень с su, стоит упомянуть, что это не обычный способ сделать вещи с Ubuntu (или все больше, другие дистрибутивы также). Ubuntu приняла решение не дать корневой вход в систему и пароль по умолчанию по причине. Вместо этого установка Ubuntu по умолчанию будет использовать sudo дать полномочия суперпользователя. В установке Ubuntu по умолчанию человеку, который установил ОС, дают "sudo" разрешение по умолчанию.

Кто-либо с полным "sudo" разрешением может выполнить что-то "как суперпользователь" путем предварительного ожидания sudo к их команде. Например, для выполнения apt-get dist-upgrade как суперпользователь, Вы могли использовать:

sudo apt-get dist-upgrade

Вы будете видеть это использование sudo в значительной степени где угодно, Вы читаете учебное руководство о Ubuntu в сети. Это - альтернатива выполнению этого.

su
apt-get dist-upgrade
exit

С sudo Вы выбираете заранее, у каких пользователей есть sudo доступ. Нет никакой потребности в них помнить пароль root, поскольку они используют свой собственный пароль. Если у Вас есть многочисленные пользователи, можно отклонить доступ суперпользователя только путем удаления их sudo разрешения, не будучи должен изменить пароль root и уведомить каждый из нового пароля. Можно даже выбрать, какие команды пользователю разрешают выполнить использование sudo и какие команды запрещаются для того пользователя. И наконец, если существует нарушение защиты, оно может в некоторых случаях оставить лучший журнал аудита, показывающий, какая учетная запись пользователя была поставлена под угрозу.

Sudo помогает выполнить единственную команду с полномочиями суперпользователя. С su, Вы постоянно опускаетесь до оболочки суперпользователя, с помощью которая нужно выйти exit или logout. Это может привести к людям, остающимся в оболочке суперпользователя для дольше, чем необходимый просто, потому что это более удобно, чем выходить и заходить снова позже.

С sudo у Вас все еще есть опция открытия постоянной (интерактивной) оболочки суперпользователя с командой:

sudo su

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

И точно так же вместо su - для оболочки входа в систему можно использовать sudo su - или его ярлык sudo -i.

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

Просто для уточнения, если Вы выбираете, можно дать пользователю root пароль, позволяющий логины как корень, как описано в ответе @Oli, если Вы конкретно хотите сделать вещи этот путь вместо этого. Я просто хотел сообщить о конвенции Ubuntu предпочтения sudo вместо этого и сообщите, что существует альтернатива.


2. Проблемы с Вашей командой chmod 777-R

Ваш вопрос также имеет вторую часть к нему: Ваши проблемы с командой sudo chmod 777 -R foobs.

Во-первых, соблюдающее предупреждение указывает на потенциально серьезную проблему безопасности о Вашей машине:

sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700

Это означает, что на некотором этапе, Вы установили /var/lib/sudo быть мировым перезаписываемым. Я предполагаю, что Вы сделали это на некотором этапе с помощью команды как sudo chmod 777 -R /. К сожалению, путем выполнения этого Вы, вероятно, в значительной степени повредили все полномочия файла всюду по своей системе. Маловероятно, что это будет единственным важным системным файлом, полномочия которого были изменены, чтобы быть мировыми перезаписываемыми. По существу у Вас есть легко hackable система теперь и единственный простой способ вернуться, он должен был бы переустановить.

Во-вторых, команда Вы использовали:

sudo chmod 777 -R foobs

При управлении файлами в рамках корневого каталога, в этом случае в ~/Desktop, Вам не придется использовать sudo. Все файлы, которые Вы создаете в своем корневом каталоге, должны быть модифицируемыми Вами так или иначе (и в противном случае что-то забавное продолжается).

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

Это почти бесспорно это chmod 777 -R [dir] это не соответствующее решение для любой проблемы, которую Вы пытались решить (и как я упомянул выше, существует доказательство, что Вы сделали это к системным файлам в/var/lib также, и я принимаю к большому количеству других мест).

Несколько основных эмпирических правил:

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

  • Вы никогда не должны вручную изменять системные файлы, принадлежавшие пакетам. Исключение: если Вы не делаете его конкретно способами, зарегистрированными теми пакетами, такой как путем изменения их конфигурации в /etc. Это применяется также к изменяющимся полномочиям файла. Если учебное руководство или попытка решить проблему требуют sudo или права суперпользователя, и это не просто изменение в конфигурации в / и т.д./, это - предупредительный знак, что Вы делаете что-то не так.

67
ответ дан 16 November 2019 в 11:02

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

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