Su: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
(+ ссылка на bug 23700)
(не показано 11 промежуточных версий 8 участников)
Строка 4: Строка 4:
'''Ответ:''' В терминале наберите команду  
'''Ответ:''' В терминале наберите команду  


su -
<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}} будет указывать на каталог пользователя и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы.


Чтобы избежать этого, следует использовать {{cmd|su -}}. В этом режиме {{prg|su}} запустит командный интерпретатор в качестве login shell (подробнее см. {{cmd|man bash}} {{term|/INVOCATION}}), и он будет вести себя в точности так, как если бы в систему залогинился root.
Чтобы избежать этого, следует использовать {{cmd|su -}}. В этом режиме {{prg|su}} запустит командный интерпретатор в качестве login shell (подробнее см. {{cmd|man bash}} {{term|/INVOCATION}}), и он будет вести себя в точности так, как если бы в систему залогинился root.


Для раздачи ограниченных прав суперпользователя применяется утилита {{prg|[[sudo]]}}.
Для раздачи ограниченных прав суперпользователя применяется утилита {{prg|[[sudo]]}}.
Ввиду наличия псевдонима работает также
<div style="font-size: 180%"><source lang="bash">su-</source></div>
<source lang="bash">$ alias su-
alias su-='su -'</source>


== Ограничения запуска ==
== Ограничения запуска ==


Пользователю для этого нужно быть в группе '''wheel''' (это автоматически присваивается первому пользователю, заведённому при установке и настраивается в Центре управления системой). Регулируется командой {{cmd|control}}:
'''Проблема'''
 
При попытке переключиться в администратора в терминале появляется следующая ошибка:
<source lang="Bash">$ su -
bash: /bin/su: Отказано в доступе</source>
 
'''Решение'''
 
Штатно пользователю для этого нужно быть в группе '''wheel''' (что автоматически выполняется для первого пользователя, заведённого при установке, и настраивается в Центре управления системой). Другие режимы регулируются командой [[control]]:
<source lang="Bash">$ /usr/sbin/control su
<source lang="Bash">$ /usr/sbin/control su
wheelonly
wheelonly
Строка 30: Строка 45:


== Ссылки ==
== Ссылки ==
* [http://core.nix.bofh.ru/docs/noroot1.htm Как обойтись без прав root. Часть 1]
* [https://bugzilla.altlinux.org/23700 Bug 23700: Совместимость по параметрам и поведению с версией из Red Hat]
* [http://core.nix.bofh.ru/docs/noroot2.htm Как обойтись без прав root. Часть 2]
* [[Получение_прав_root]]
* [http://core.nix.bofh.ru/docs/noroot3.htm Как обойтись без прав root. Часть 3]
* [[sudo|Настройка sudo]]
* [[sudo|Настройка sudo]]
* [http://web.archive.org/web/20081204101725/core.nix.bofh.ru/docs/noroot2.htm Как обойтись без прав root. Часть 2]


[[Категория:Пользователю]]
{{Category navigation|title=root|category=root|sortkey={{SUBPAGENAME}}}}
[[category:FAQ]]

Версия от 06:27, 21 ноября 2018

Вопрос: Как перейти в режим суперпользователя (переключиться в 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).

Ссылки