Su: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 4: | Строка 4: | ||
'''Ответ:''' В терминале наберите команду | '''Ответ:''' В терминале наберите команду | ||
<div style="font-size: 180%"><source lang="bash">su -</source></div> | |||
''Пояснения:'' при переходе в режим суперпользователя командой {{prg|su}} происходит просто вызов командного интерпретатора с правами root. При этом значения переменных окружения, в частности {{path|$PATH}}, остается таким же, как у пользователя. То есть в переменной {{path|$PATH}} не окажется каталогов {{path|/sbin}}, {{path|/usr/sbin}}, и без указания полного имени будут недоступны команды {{prg|route}}, {{prg|lilo}}, {{prg|mkswap}} и другие. Более того, переменная {{path|$HOME}} будет указывать на каталог пользователя, и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы. | ''Пояснения:'' при переходе в режим суперпользователя командой {{prg|su}} происходит просто вызов командного интерпретатора с правами root. При этом значения переменных окружения, в частности {{path|$PATH}}, остается таким же, как у пользователя. То есть в переменной {{path|$PATH}} не окажется каталогов {{path|/sbin}}, {{path|/usr/sbin}}, и без указания полного имени будут недоступны команды {{prg|route}}, {{prg|lilo}}, {{prg|mkswap}} и другие. Более того, переменная {{path|$HOME}} будет указывать на каталог пользователя, и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы. | ||
Строка 14: | Строка 14: | ||
Ввиду наличия псевдонима, работает, так же | Ввиду наличия псевдонима, работает, так же | ||
<div style="font-size: 180%"><source lang="bash">su-</source></div> | |||
<source lang="bash">$ alias su- | |||
alias su-='su -'</source> | |||
== Ограничения запуска == | == Ограничения запуска == |
Версия от 14:33, 30 июня 2016
Вопрос: Как перейти в режим суперпользователя (переключиться в root)?
Ответ: В терминале наберите команду
su -
Пояснения: при переходе в режим суперпользователя командой su происходит просто вызов командного интерпретатора с правами root. При этом значения переменных окружения, в частности $PATH, остается таким же, как у пользователя. То есть в переменной $PATH не окажется каталогов /sbin, /usr/sbin, и без указания полного имени будут недоступны команды route, lilo, mkswap и другие. Более того, переменная $HOME будет указывать на каталог пользователя, и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы.
Чтобы избежать этого, следует использовать su -. В этом режиме su запустит командный интерпретатор в качестве login shell (подробнее см. man bash /INVOCATION), и он будет вести себя в точности так, как если бы в систему залогинился root.
Для раздачи ограниченных прав суперпользователя применяется утилита sudo.
Ввиду наличия псевдонима, работает, так же
su-
$ alias su-
alias su-='su -'
Ограничения запуска
Проблема
При попытке переключиться в администратора в терминале появляется следующая ошибка:
$ su -
bash: /bin/su: Отказано в доступе
Решение
Пользователю для этого нужно быть в группе wheel (это автоматически присваивается первому пользователю, заведённому при установке и настраивается в Центре управления системой). Регулируется командой control:
$ /usr/sbin/control su
wheelonly
$ ls -l `which su`
-rws--x--- 1 root wheel 22316 авг 25 2012 /bin/su
$ groups | grep wheel
cas wheel uucp proc cdrom floppy cdwriter audio radio sambashare vboxusers camera xgrp scanner
$ su -
Password:
#
Также можно разрешить для всех:
control su public
(залогиниться первым пользователем или в консоли [Ctrl+Alt+F2] самим root).