Чому я не можу запустити `su`? (і як мені це зробити?)


33

Щоразу, коли я намагаюся оформити, suя отримую це:

$ su  
Password:  
su: Sorry

Само собою, я ввожу правильний пароль адміністратора, з яким працює sudo. Те, що я хочу, - це не потрібно вводити sudoкожен раз.

Відповіді:


34

У MacOS X кореневий користувач за замовчуванням відключений, тому suпрацювати не буде. Як заявили інші, найкраще використовувати sudo.

Якщо ви повинні дозволити користувачеві кореня, см TechNote від Apple: Включення і використання «кореневого» користувача в Mac OS X .


13
sudo suяк і раніше працює, тому він насправді не відключений. У нього просто немає пароля.
Підроблена назва

@FakeName Це найсмішніший бекдор! Якщо ти можеш бігати sudo su, який тоді сенс відключення su?
Калонь Колоб

3
@KolobCanyon - Справа насправді не в "відключенні su", це у запобіганні кореневого входу . Якщо заборонити вхід у систему root, ви запобігаєте купу можливих проблем із безпекою. Чи не дозволяючи кому - то , хто може sudoна suце свого роду нерозумно. В основному, suпросто змінює поточний ідентифікатор користувача та виконує команду (оболонку, якщо вона не вказана). Якщо ідентифікатор користувача вже 0 (root), наприклад, коли він виконується з sudo, йому нічого робити, тому він просто виконує оболонку. Подібний ефект можна отримати, роблячи sudo bash.
Підроблена назва

1
@FakeName Все ще плутається. Яка різниця між входом у систему як root та запуском «sudo su»? Чи не ефективно це на одному рівні?
Калонь Колоб

2
@KolobCanyon - Ні. В основному, якщо ви вимкнете вхід , це означає, що якщо в процесі входу є вразливість, хакер не може використовувати його для отримання кореня безпосередньо. В основному, він переміщує необхідний кореневий компроміс з "входу в компроміс" до "компромісу для входу в обліковий запис користувача + privesc". Це в основному робиться як поглиблена оборона.
Підроблена назва

14

У вас є два варіанти. Перше - використовувати sudo -s- це надасть вам доступ суперпользователя, але ви все одно залишатиметесь "самим собою" (так би мовити), тому такі речі, як ~і раніше, будуть вашим домашнім каталогом. Крім того, ви можете використовувати sudo su, що дає вам оболонку як фактичного кореневого користувача вашого Mac.


5
Apple Way (tm) - використовувати sudoдля запуску команд, які потребують підвищених привілеїв, а не переходити на кореневу оболонку і працювати з цього.
Ян C.

3
@Ian C. - Ні, це насправді єдиний шлях. Apple просто використовує його, тому що це також * nix.
Підроблена назва

@Fake Name: Apple переживає великі болі, щоб ніколи не говорити та не піддавати кореневій оболонці користувачам. Можна сказати, що вони сприймають sudoетос до крайності. Але що б там не було: семантика. Не використовуйте кореневі оболонки в ОС X.
Ян C.

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

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 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.