Я пытаюсь использовать команду su для запуска приложения от имени другого пользователя
В этом случае я пытаюсь запустить irssi
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Я запускаю gksu и устанавливаю те же параметры и это работает, и не спрашивает у меня пароль пользователя. В чем проблема? И как мне это решить?
Я должен отметить, что пользователь был создан таким образом
adduser --system --disabled-login [username]
, если это что-то меняет .... вздох.
Этот ответ должен все еще помочь Вам, даже беря редактирования к вопросу во внимание. В частности, учетная запись, созданная с
--disabled-login
не имеет никакого набора пароля и никаких других средств входа в систему, но должно все еще быть возможно использоватьsudo
(объясненный ниже) к командам выполнения или оболочке как пользователь. Это, на самом деле, какroot
учетная запись настраивается в Ubuntu.
su - irssi
.Эта команда пытается запуститься, оболочка, принадлежавшая пользователю, назвала irssi
.
Это перестанет работать если:
irssi
пользователь.irssi
учетная запись пользователя отключена.irssi
учетная запись пользователя отключена для интерактивного входа в систему. Иногда учетной записи разрешают использовать сервисы как FTP, но мешают обычно входить в систему путем установки их оболочки на что-то, что сразу выходит, как /bin/false
. Затем вход в систему сразу заканчивается без сообщения.irssi
пользователь. -
флаг делает его так, оболочка моделирует начальную оболочку входа в систему - то есть, таким образом, это действительно очень похоже на вхождение в систему как irssi
. Без -
флаг, если su
команда успешно выполнилась, Вы все еще владели бы оболочкой irssi
, но переменные среды как HOME
было бы неизменно.
Если Вы вместо этого хотите запустить названную программу irssi
, необходимо вызвать su
по-другому:
su username - -c irssi
Если Вы не учитываете -c username
, это совпадает с -c root
- это пытается выполнить команду как корень.
Кроме того, можно запустить оболочку и затем выполнить команду:
su username -
.irssi
).exit
.root
Если Вы хотите работать irssi
как root
, su
путь не состоит в том, чтобы сделать этого. Корневые логины отключены по умолчанию на Ubuntu, и существует только редко любая причина повторно включить им. Если Вы включили root
вход в систему, затем необходимо смочь использовать su
стать root
. Причина является ненужным включить root
учетная запись - то, что, делаете ли Вы, Вы можете все еще команды выполнения как root
с sudo
.
Когда Вы команды выполнения с sudo
, Вы вставляете свой пароль, не пароль пользователя, при идентификационных данных которого Вы хотите, чтобы команда работала. Только администраторы могут выполнить произвольные команды как root
с sudo
(если Вы не реконфигурировали sudo
позволить другим делать так, конечно). Таким образом, пользователя, которому не разрешают администрировать систему, не разрешают командам выполнения как root
с их собственным паролем.
Работать irssi
как root
с sudo
:
sudo irssi
И Вы ввели бы свой пароль при запросе, нет root
.
Кроме того, какой пароль Вы вводите, это делает то же самое как:
su -c irssi
Кроме sudo
версия может успешно выполниться, потому что она не требует root
учетная запись, которая будет включена.
Как с su
, можно использовать sudo
к командам выполнения как другой, не -root
пользователь. Работать irssi
как username
с sudo
:
sudo -u username irssi
Если Вы хотите sudo
вести себя как su -
относительно HOME
- то есть, Вы хотите использовать целевого пользователя HOME
переменные среды, можно работать sudo
с -H
флаг:
sudo -H irssi
sudo -H -u username irssi
Можно запустить целую оболочку с sudo
, как Вы может с su
. За исключением чьего пароля Вы вставляете, эта команда имеет тот же эффект как su
:
sudo -s
И эта команда имеет тот же эффект как su -
:
sudo -i
( i
обозначает начальную оболочку входа в систему.)
Можно запустить оболочку как другой пользователь, также:
sudo -u username -s
sudo -u username -i
sudo
Узнать больше sudo
, смотрите на:
sudo
сайт (автором sudo
).man sudo
gksu
работа, когда su
не?gksu
вероятно, работавший путем выполнения sudo
.
gksu
frontend для обоих su
и sudo
. В Ubuntu это принимает значение по умолчанию к использованию sudo
(так как в Ubuntu, su
обычно не используется для становления root
, и только вторичный способ стать другим, не -root
пользователи).
Можно сделать gksu
использовать su
как frontend путем выполнения gksu --su-mode
.
Можно узнать ли gksu
находится в su
режим или sudo
режим, и (если Вы желаете) изменяет эти настройки путем выполнения gksu-properties
. Это - установка в расчете на пользователя.
Когда gksu
находится в sudo
режим, это ведет себя то же как gksudo
.
gksu
sudo
".man gksu
gksu
веб-сайт (производителями gksu
).gksu
по сравнению с. gksudo
в Ubuntu.Вы нашли в конечном счете, что смогли выполнить необходимую команду с:
sudo -u username irssi
(Который имеет упомянутые выше методы.)
В конечном счете Вы сообщили о двух сведениях, которые достаточны для объяснения, почему случалось так, что другие методы перестали работать, но который успешно выполнился:
username
учетная запись была создана с --disabled-login
флаг, который заставляет его не иметь никакого пароля (и никакие другие средства входа в систему). Наличие никакого пароля не означает, что возможно войти в систему с пустым паролем. Это означает, что никакой пароль не достаточен пройти проверку подлинности. В сочетании с устранением других средств аутентификации это означает username
не может пройти проверку подлинности вообще.
Так все su
- отсутствуют основанные решения. sudo
может работать хотя, потому что с sudo
Вы не проходите проверку подлинности как пользователь, которого Вы собираетесь исполнить роль. Вместо этого Вы должны быть разрешены исполнить роль их, и Вы проходите проверку подлинности как сами (т.е. введите свой собственный пароль, не их).
Возможно установить пароль на учетной записи, которая снимает этот барьер к входу в систему:
sudo passwd username
Однако могло бы быть серьезное основание, пользователю не разрешают войти в систему. Например, если бы этому пользователю разрешили войти в систему и вошел в систему графически, то плохие проблемы явились бы результатом среды пользователя или полномочий, являющихся плохо подходящим для выполнения приложения X11? Если бы этот пользователь мог бы войти в систему, который позволил бы войти в систему удаленно как тот пользователь (для машин, где Вы выставили сетевые службы)?
Если Вы когда-нибудь хотите повторно отключить его:
sudo passwd -dl username
Похожие страницы: Переотключение root
учетная запись, временно включив это.
username
учетная запись имеет /bin/false
как его оболочка входа в систему.
Когда оболочка как bash
выполнения как Ваша оболочка входа в систему, это настраивает Вашу среду и дает Вам интерактивную подсказку, с которой можно управлять машиной.
Когда /bin/false
выполнения, с другой стороны, это ничего не делает и сообщает об отказе. (/bin/true
ничего не делает и сообщает об успехе.)
false
и true
команды полезны в сценариях и в различных целях тестирования, но также и для отключения учетной записи так, чтобы, когда кто-то входит в систему, их сессия входа в систему сразу закончилась. Тем путем пароль (или другие средства аутентификации) может быть включен, и люди могут войти в систему, просто не для доступа оболочки. Например, если существует FTP-сервер, они могли бы все еще получить доступ к своей учетной записи через FTP. Если бы существует сервер SSH, они не смогли бы получить оболочку через SSH, но они могли все еще использовать sftp
и scp
передать файлы.
С тех пор username
оболочка входа в систему была нефункциональна, команды как su username
, su - username
, sudo -u username -s
, и sudo -u username -i
не мог работать.
Но команды, которые не дают оболочку, как sudo -u username command
или su username -c 'command'
мог все еще работать.
Так как команды могут быть выполнены, можно изменить оболочку входа в систему пользователя на что-то функциональное:
sudo chsh -s /bin/bash username
Однако это должно также быть сделано с осторожностью, поскольку может быть серьезное основание отключить интерактивные логины для пользователя.
Здесь, username
оба отключили пароль и "отключили" оболочку. Отсутствие любого рабочего пароля предотвратило все su
- основанные решения от работы, в то время как отсутствие рабочей интерактивной оболочки входа в систему препятствовало всем порождающим оболочку решениям работать (кроме ручного вызова оболочки, как sudo -u username bash
).
sudo -u username command
то, что осталось.