Почему я не могу запустить `su`? (а как мне быть?)

33

Всякий раз, когда я пытаюсь выдать, suя получаю это:

$ su  
Password:  
su: Sorry

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

Petruza
источник

Ответы:

34

В MacOS X пользователь root по умолчанию отключен, поэтому suработать не будет. Как уже говорили другие, лучше всего использовать sudo.

Если вы должны позволить пользователю корня, см TechNote от Apple: Включение и использование «корневого» пользователя в Mac OS X .

ghoppe
источник
13
sudo suвсе еще работает, поэтому он не отключен. У него просто нет пароля.
Фальшивое имя
@FakeName Это самый веселый бэкдор! Если вы можете бежать sudo su, то в чем смысл отключения su?
Каньон Колоб
3
@KolobCanyon - Дело не в том, чтобы «отключить su», а в том, чтобы предотвратить вход в систему root . Запретив вход в систему как root, вы предотвратите множество возможных проблем безопасности. Не позволяя кому - то , кто может sudoна suэто своего рода глупо. По сути, suпросто изменяет текущий идентификатор пользователя и выполняет команду (оболочку, если не указано). Если идентификатор пользователя уже равен 0 (root), например, когда выполняется с ним sudo, ему нечего делать, поэтому он просто запускает оболочку. Вы можете получить аналогичный эффект, делая sudo bash.
Поддельное имя
1
@FakeName Все еще в замешательстве. В чем разница между входом в систему как root и выполнением sudo su? Разве это не тот же уровень?
Каньон Колоб
2
@KolobCanyon - Нет. По сути, если вы отключаете вход в систему , это означает, что, если в процессе входа в систему есть уязвимость, хакер не сможет использовать ее для получения root напрямую. По сути, он перемещает требуемый компромисс с правами root из «входа в систему» ​​в «вход в систему для учетной записи пользователя + privesc». Это в основном сделано в качестве глубокоэшелонированной защиты.
Поддельное имя
15

У вас есть два варианта. Первое - это использование sudo -s- это даст вам доступ суперпользователя, но вы все равно останетесь «самим собой» (так сказать), так что такие вещи, как ~и раньше, будут вашим домашним каталогом. Кроме того, вы можете использовать sudo su, что дает вам оболочку в качестве фактического пользователя root вашего Mac.

Кайл Кронин
источник
5
Apple Way (tm) должен использовать sudoдля запуска команд, требующих повышенных привилегий, а не для переключения на корневую оболочку и работы с этого.
Ян С.
3
@Ian C. - Нет, это на самом деле Unix-способ. Apple просто использует его, потому что он тоже * nix.
Фальшивое имя
@ Фальшивое имя: Apple делает все возможное, чтобы никогда не говорить и не раскрывать корневую оболочку для пользователей. Можно сказать, что они sudoдоводят дух до крайности. Но что угодно: семантика. Не используйте корневые оболочки в OS X.
Ян С.
1
@Ian C - Apple не делает больше, чем дизайнеры * nix, Apple просто мало об этом говорит. В обоих случаях он есть, только с такими вещами, как Linux, они говорят, как легко им пользоваться. Если это делает его более широко используемым , это не указывает на основное архитектурное различие.
Фальшивое имя
1

Например, если вам нужно переместить файлы или использовать git с помощью CLI, тогда в этом случае лучшим решением будет использование sudo -sкоманды. После этой команды вам не нужно вводить пароль снова и снова.

Кахеф Мирза
источник
1

Я думаю, что вы не можете сделать это как "обычный" пользователь ...

Если есть другая учетная запись пользователя с правами администратора, вы должны использовать эту

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now
user302849
источник
1

Современное решение: sudo -u

Для запуска как другое использование, используйте sudo -u.

Например, чтобы запустить текстовый редактор, такой как nano :

sudo -u someuser nano

… И введите пароль пользователя вашего администратора Mac при появлении запроса. На данном этапе вызывается пользователь вашего администратора Mac sudo, а не someuserпользователь, поэтому вы не вводите someuserпароль.

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

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

sudo -u someuser -i nano

nanoПриложение запускается от имени пользователя, someuserно только после запуска сценариев запуска для этого пользователя.

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

sudo -u someuser -i

Старая школа: sudo su someuser

Другой подход использует suкоманду в сочетании с sudo. Команда suозначает «сменить пользователя».

sudo su someuser

Или, чтобы включить запуск сценариев запуска пользователя, добавьте дефис.

sudo su - someuser

root пользователь

rootПользователя в Unix-подобной операционной системы имеют абсолютную власть , чтобы сделать что - нибудь.

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

При необходимости вы можете включить rootпользователя в macOS и затем переключиться на него. Это сильно не рекомендуется. Я бы пошел по этому пути только в качестве отчаянного последнего средства.


Для обсуждения этого в контексте postgresпользователя, работающего с системой баз данных Postgres в macOS, см. Этот вопрос на дочернем сайте, DBA Stack Exchange .

Базилик Бурк
источник