Sudo против root; какие-либо фактические различия?

Я работаю с членом поддержки для продукта, и он настаивает на том, что мне нужно быть root, чтобы установить серию патчей, и что sudo не будет работать; он не дает причины, но кажется очень твердым в своих убеждениях. Просматривая Superuser я не могу определить любую возможную причину этого, и в подтверждение, когда я запускаю:

sudo -l

Я:

...
User [MY USERNAME] may run the following commands on this host:
    (ALL) ALL

получение доступа от команды Linux / server, чтобы на самом деле быть root не imediate процесс, как я поймите, поэтому я бы предпочел установить их сам.

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

16
задан fixer1234
11.04.2023 14:45 Количество просмотров материала 2594
Распечатать страницу

5 ответов

это сильно зависит от того, как вы называете вашу программу с sudo или su.

Е. Г. на компьютере, на котором я нахожусь в данный момент:

                  .bashrc                        
    COMMAND        $HOME   $USER  Env.  $PATH
 1. sudo -i        (root)   root  root  [1]
 2. sudo -s        (USER)   root  USER  /home/${USER}/bin:[1]
 3. sudo /bin/bash (USER)   root  USER  /home/${USER}/bin:[1]  
 4. sudo su        (root)   root  USER  [1]:/usr/games:/usr/local/games  
 5. sudo su -      (root)   root  root  [1] 

где [1]=/usr / local / sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: / bin

Env=переменные окружения сбрасываются для 1 и 5, берутся из $USER в 2,3,4.

таким образом, скрипт или программа, запущенная с другой опцией, может видеть разные $PATH,$HOME, своя раковина может прочитать разные .bashrc,.profile переменные среды. Он читает файл, связанный с $HOME. Каждый пользователь может изменять свое окружение по-разному (variables,$PATH, .bashrc,.профиль. ,файл, псевдоним...). В частности, пользователь может иметь другой порядок каталогов в своем $PATH и, как следствие, скрипт может выполнить команду, например, в /home/$USER/bin вместо этого тот, что в пути ожидается от root.

вы можете запустить программу в sudo -i как вы были зарегистрированы как root с su -, но вы можете иметь другое поведение, если вы запустите его с sudo MyCommand или su -c MyCommand.


С man su:

в описании:

текущая среда передается в новую оболочку. Значение $PATH сбрасывается в / bin: / usr / bin для обычных пользователей или на /sbin:/ОГРН: выполнить/sbin:/usr/Бен для суперпользователя

...

В разделе Параметры:

-, - l, --login

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

у мужчины sudo

- i, --login

Запустите оболочку, указанную в записи базы данных паролей целевого пользователя, как оболочка входа. Это означает, что файлы ресурсов для входа как например. профиль или. логин будет прочитан оболочкой. Если команда указана, то она передается в оболочку для выполнения через параметр Шелл -Си. Если команда не указана, выполняется интерактивная оболочка. sudo пытается перейти в домашний каталог пользователя перед запуском оболочки. команда выполняется в среде, аналогичной той, которую пользователь получает в журнале в. Раздел среда команд в руководстве sudoers(5) описывает, как параметр-i влияет на среду, в которой выполняется команда когда используется политика sudoers.

33
отвечен Hastur 2023-04-12 22:33

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

действительно, есть способ различить разницу между программой, запущенной как root и программы под sudo - через getuid vs geteuid - но это надуманный трюк. Почему система патч сделать?

22
отвечен sds 2023-04-13 00:50

есть несколько различий, если вы получаете корневую оболочку, как указано в @Hastur.

Если вы не получаете корневой оболочки, то есть больше различий. Член службы поддержки может иметь опыт, пытаясь сделать такие вещи, как sudo patch -p0 < /root/patch.file здесь patch выполняется от имени root, но < (трубопровод из файла) нет.

7
отвечен Jayen 2023-04-13 03:07

Я верю при использовании sudo access, файл журнала создается, однако при запуске непосредственно через корневой доступ нет.

1
отвечен Ashley Redman BSc 2023-04-13 05:24

Это зависит от того, насколько мелкозернистым вы хотите корневой доступ быть. Если у вас есть несколько пользователей, которые выполняют разные задачи в системе, то sudo будет более идеальным. Одним из часто используемых примеров является необходимость перезапуска приложения или базы данных. Безопасность всегда лучше всего делать наименее привилегированными. Я использую группы и разрешаю только этим группам выполнять явные действия. Хорошей книгой, описывающей этот процесс, является"sudo Mastery: User Access Control for Real People". На самом деле это хорошая книга о судо в общем...

0
отвечен meredithkm 2023-04-13 07:41

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх