5

Когда я запустил '# sudo touch newfile', я ожидал, что файл будет принадлежать мне, а не root, так как я понимаю, что sudo дает мне, пользователю, привилегии root, но фактически не переключает пользователя.

У меня есть фундаментальное неправильное понимание того, что такое sudo?

4 ответа4

8

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

6

Что сказал Мипади, что вы можете продемонстрировать, сравнив результаты этих двух «whoami» («кто я?") команды:

$ sudo whoami
$ whoami

4

sudo (имя происходит от su "do" или super user "do") позволяет запускать команду от имени пользователя root. Это не дает вашему пользователю различные привилегии. Поэтому, когда вы запускаете #sudo touch newfile пользователь root выполнил команду touch newfile , поэтому newfile принадлежит пользователю root.

Больше информации на странице Судо.

3

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

sudo -u yourself touch newfile , если вы хотите, чтобы файл , который будет принадлежать yourself

Ваше предположение, что sudo не меняет идентификатор пользователя, является правильным с точки зрения остальной части вашего сеанса. Думайте об этом как su + touch newfile + exit . Таким образом, в вашей оболочке вы "остаетесь" собой, но sudo выполняет вашу команду в новом процессе с другим эффективным идентификатором пользователя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .