Прочее компьютерное

Чем отличается su от su- в линукс?

user@debian:~$ su
Пароль:
root@debian:/home/user#

user@debian:~$ su-
bash: su-: команда не найдена
user@debian:~$

непонятно отчего с "su-" входит перестало получаться-пишет -команда не найдена ?!
пожалуйста поясните д----у
издец линухсятники пошли - внятно не могут обьяснить - потому как сами толком не понимают ....


разница в переменном окружение - увидеть её легко - после входа
su - или просто su
посмотри разницу в выводе команды env - переменные окружения будут разные - с "черточкой" переменная будет такая - когбудто ты вошел не из под пользователя а сразу после загрузки системы

тоесть администратор когда заходишь su - входит именно под своими настройками а не наследует настройки пользователя - правильно входить именно через "su -"
Василий Андрусяк
Василий Андрусяк
8 165
Лучший ответ
А пробел где?
su username дефис видимо рут. Но еще заыисит от разрешений может юзер вообще не имеет права её выполнять это кажись в /etc/sudoers.conf описывается
Иногда работает sudo su -
Антон Комаров
Антон Комаров
68 804
Эргаш Аманов user@debian:~$ su
Пароль:
root@debian:/home/user#

user@debian:~$ su -
Пароль:
root@debian:~#

Спасибо. в первом при входе оказываюсь в одном месте во втором в другом..
из за чего так получается?
Антон Комаров # означает что ты с правами суперюзера.
У обычного юзера $
/home/user это домашний каталог юзера с именем юзер
Тильда это рабочий каталог текщего юзера.
То есть если юзер хочет посмотреть содержимое своего домашнего каталога он наберет
ls -a ~/ вместо ls /home/username
Где username имя юзера.
Почему команда su выводит название домашнего каталога я не знаю возможно она должна выводить домашний каталрг того юзера на которого выполнена.
Но можно проверить pwd означает print working directory те вывести текущую рабочую дирикторию.
А cd означает change directory.
man su выведет краткую справку по работе с командой su.(обычно на английском или иногда даже лучше бы на англиском).
Там мноно нюансов зависит от настроек системы.
Антон Комаров Например ls -a /home/user
Если там будет в конце root root
Это означает что директория принадлежит пользователю рут из группы рут то есть суперпользователю админу в общем.
Антон Комаров Команда su не найдена потому что
ls -l /bin/root или
ls -l /sbin/root выведет
Права доступа к этой команде и скорее всего rwxr--r-- root root
То есть программа принадлежит пользователю рут из группы рут и он имеет полный доступ к файлу а остальные имеют доступ только на чтение.
Пробуй sudo su - если не работает нужно править sudoers.conf
потому что "su -" а не "su-"
"-" это командная опция, ключ, а не отдельная команда.
Эргаш Аманов user@debian:~$ su
Пароль:
root@debian:/home/user#

user@debian:~$ su -
Пароль:
root@debian:~#

Спасибо. в первом при входе оказываюсь в одном месте во втором в другом..
из за чего так получается?
Пиши su -
Эргаш Аманов user@debian:~$ su
Пароль:
root@debian:/home/user#

user@debian:~$ su -
Пароль:
root@debian:~#

Спасибо. в первом при входе оказываюсь в одном месте во втором в другом..
из за чего так получается?
Александр Шумилин Из-за того, что "-" добавляет использование этой команды в данном расположении, т.е из расположения консоли
su позволяет получить привилегии другого пользователя сохранив при этом данные текущего пользовательского окружения.
su - полностью меняет пользователя вместе совсем окружением.

В твоих примерах это проявляется в текущем каталоге. Использовав su, ты по-прежнему остался в домашнем каталоге пользователя user. Но т.к. для root этот каталог домашним не является, то вместо ~ ты видишь его полный адрес: /home/user. А когда ты использовал su - , то не просто повысил свои привелегии, но и полностью зашел из-под другого пользователя, вместе со всем своим пользовательским окружением. Как следствие - оказался в домашнем каталоге нового пользователя (домашний каталог обозначается знаком ~) Домашний каталог пользователя root расположен в директории /root

 user@home:~$ pwd 
/home/user
user@home:~$ sudo su
[sudo] пароль для user:
root@home:/home/user# pwd
/home/user
root@home:/home/user# exit
exit
user@home:~$ sudo su -
root@home:~# pwd
/root
root@home:~#

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

Подробнее можно прочесть здесь:
https://debian-handbook.info/browse/ru-RU/stable/sect.shell-environment.html
https://losst.pro/peremennye-okruzheniya-v-linux

Если во все эти тонкости вникать не хочется, то просто используй su -
Эргаш Аманов Если требуется более длительное время работы с правами администратора, то одним из вариантов является команда sudo -s. Вы перейдете в режим суперпользователя, в приглашении командной оболочки Linux символ доллара $ заменяется на знак решетки #


user@debian:~$ sudo -s
[sudo] пароль для user:
user is not in the sudoers file. This incident will be reported.
user@debian:~$

почему не сработал?
Костя Болховских Потому что sudo su -s =)

Ну и не забыай, что в Debian по умолчанию утилита sudo отключена. Просто мне с ней удобнее =)
Она позволяет выполнить с привилегиями root только одну-единственную команду, без смены пользователя