Відповіді:
У MacOS X кореневий користувач за замовчуванням відключений, тому su
працювати не буде. Як заявили інші, найкраще використовувати sudo
.
Якщо ви повинні дозволити користувачеві кореня, см TechNote від Apple: Включення і використання «кореневого» користувача в Mac OS X .
sudo su
, який тоді сенс відключення su
?
su
", це у запобіганні кореневого входу . Якщо заборонити вхід у систему root
, ви запобігаєте купу можливих проблем із безпекою. Чи не дозволяючи кому - то , хто може sudo
на su
це свого роду нерозумно. В основному, su
просто змінює поточний ідентифікатор користувача та виконує команду (оболонку, якщо вона не вказана). Якщо ідентифікатор користувача вже 0 (root), наприклад, коли він виконується з sudo
, йому нічого робити, тому він просто виконує оболонку. Подібний ефект можна отримати, роблячи sudo bash
.
У вас є два варіанти. Перше - використовувати sudo -s
- це надасть вам доступ суперпользователя, але ви все одно залишатиметесь "самим собою" (так би мовити), тому такі речі, як ~
і раніше, будуть вашим домашнім каталогом. Крім того, ви можете використовувати sudo su
, що дає вам оболонку як фактичного кореневого користувача вашого Mac.
sudo
для запуску команд, які потребують підвищених привілеїв, а не переходити на кореневу оболонку і працювати з цього.
sudo
етос до крайності. Але що б там не було: семантика. Не використовуйте кореневі оболонки в ОС X.
Наприклад, якщо вам потрібно перемістити файли або використовувати git за допомогою CLI, тоді в цьому випадку найкращим рішенням буде використання sudo -s
команди. Після цієї команди вам не потрібно вводити пароль знову і знову.
Я думаю, ви не можете зробити це як "звичайний" користувач ...
Якщо є інший обліковий запис користувача з правами адміністратора, ви повинні використовувати цей
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
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 .
sudo su
як і раніше працює, тому він насправді не відключений. У нього просто немає пароля.