1.2Kпросмотров
33.5%от подписчиков
25 февраля 2026 г.
Score: 1.3K
🔥 Разница между su и su - Ни для кого не секрет, что Linux - система, с которой можно работать от разных пользователей. Сегодня я запускаю сессию от Паши, завтра от Пети. Когда вы в сессии открываете терминал, стартует оболочка, которая подстраивает окружение под конкретного юзера: выполняет скрипты, определяет переменные. Бывает, приходится, работая в сессии одного пользователя, переключиться на другого, например, чтобы использовать ресурсы, ограниченные правами доступа. Для этого мы используем команду su (substitute user), которая позволяет сменить пользователя в текущей оболочке: $ su vasya После выполнения команды создастся дочерняя оболочка, которая переймет все переменные окружения родителя, определит пользовательские (USER, HOME ...) и выполнит локальные "Васины" скрипты: /home/vasya/.bashrc и т.д.: $ export USER1VAR="vasya" $ su xoadmin
$ printenv | grep USER
USER=xoadmin
USER1VAR=vasya Какая-то каша выходит. Половина Васиных переменных, половина юзера xoadmin. Такой способ полезен, когда нам нужно быстро поменять пользователя и не требуется его окружение в изначальном виде. Если нужно полностью воссоздать среду, как при чистом входе в систему, следует использовать su -: $ su - xoadmin Окружение родителя мы не наследуем и запускаем оболочку типа "login shell", которая выполнит дополнительные скрипты инициализации "/etc/profile", "~/.bash_profile". Также, когда мы используем su -, наш рабочий каталог переключается на домашний для целевого пользователя. Мелочь, но факт: $ pwd
/home/vasya/Music
$ su - xoadmin
$ pwd
/home/xoadmin