Я пытаюсь использовать команду su для запуска приложения от имени другого пользователя.
В этом случае я пытаюсь запустить Ирсси
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Я запускаю gksu и устанавливаю те же параметры, и это работает, и не спрашивает у меня пароль пользователя. В чем проблема? И как мне это решить?
Я должен отметить, что пользователь был создан как это
adduser --system --disabled-login [username]
если это имеет какое-то значение .... вздох.
irssi
есть проблема, и что команда su работает?Ответы:
Есть несколько проблем с командой
su - irssi
.Эта команда пытается запустить оболочку, принадлежащую пользователю с именем
irssi
.Это потерпит неудачу, если:
irssi
пользователя.irssi
учетной записи пользователя отключен.irssi
учетной записи пользователя отключен для интерактивного входа в систему . Иногда учетной записи разрешается использовать такие службы, как FTP, но запрещено входить в систему, настроив в своей оболочке что-то, что немедленно завершается, например/bin/false
. Тогда логин сразу заканчивается, без сообщения.irssi
пользователя.-
Флаг делает его таким образом , оболочка имитирует первоначальный оболочку входа в систему - то есть, так что это действительно очень похоже на лесозаготовки , какirssi
. Без-
флага, еслиsu
команда выполнена успешно, вы все равно получите оболочку, которой владеетеirssi
, но переменные окружения вродеHOME
бы не изменились.Если вы вместо этого хотите запустить вызываемую программу
irssi
, вы должны вызывать по-su
другому:Если вы не укажете , это то же самое, что --it пытается выполнить команду от имени пользователя root.
-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
:И вы бы вводили свой пароль при появлении запроса, а не
root
s.Кроме того, какой пароль вы вводите, это делает то же самое, что и:
За исключением того, что
sudo
версия может быть успешной, потому что она не требует включенияroot
учетной записи.Как и с
su
, вы можете использоватьsudo
для запуска команд, как другой, неroot
пользователь . Для запускаirssi
какusername
сsudo
:Если вы хотите
sudo
вести себя как вsu -
отношении -HOME
то есть, вы хотите использоватьHOME
переменные окружения целевого пользователя , вы можете запуститьsudo
с-H
флагом:Вы можете начать целую оболочку с
sudo
, как вы можете сsu
. За исключением пароля, который вы вводите, эта команда имеет тот же эффект, что иsu
:И эта команда имеет тот же эффект, что и
su -
:(
i
Обозначает начальную оболочку входа .)Вы также можете запустить оболочку как другой пользователь:
Дальнейшее чтение на
sudo
Чтобы узнать больше о
sudo
, взгляните на:sudo
сайт (авторsudo
).man sudo
Почему
gksu
работал, когдаsu
нет?gksu
наверное работал бегомsudo
.gksu
это интерфейс для обоихsu
иsudo
. В Ubuntu он по умолчанию используетсяsudo
(поскольку в Ubuntusu
обычно не используется для становленияroot
и является лишь второстепенным способом стать другим, не являющимсяroot
пользователем).Вы можете
gksu
использоватьsu
в качестве внешнего интерфейса, запустивgksu --su-mode
.Вы можете узнать,
gksu
находится ли он вsu
режиме илиsudo
режиме, и (если хотите) изменить эту настройку, запустивgksu-properties
. Это настройка для каждого пользователя.Когда
gksu
находится вsudo
режиме, он ведет себя так же, какgksudo
.Дальнейшее чтение на
gksu
sudo
".man gksu
gksu
сайт (создателиgksu
).gksu
VS.gksudo
в Ubuntu.Анализ после решения
В конечном итоге вы обнаружили, что смогли выполнить необходимую команду с помощью:
(Какой из методов, перечисленных выше.)
В конечном итоге вы сообщили о двух фрагментах информации, которых достаточно, чтобы объяснить, почему другие методы потерпели неудачу, но это удалось:
username
Счет был создан с--disabled-login
флагом, что делает его нет без пароля (и никаких других средств авторизации). Отсутствие пароля не означает, что можно войти с пустым паролем . Это означает, что для аутентификации пароля недостаточно. В сочетании с устранением других средств аутентификации это средствоusername
вообще не может аутентифицироваться.Таким образом, все
su
основанные решения отсутствуют.sudo
может работать, хотя, потому чтоsudo
вы не аутентифицируетесь как пользователь, которого вы собираетесь выдать себя за другого. Вместо этого вы должны быть авторизованы, чтобы выдавать себя за них, и вы аутентифицируетесь как вы (то есть, вводите свой собственный пароль, а не их).Можно установить пароль для учетной записи, который устраняет этот барьер для входа в систему:
Однако может быть веская причина, по которой пользователю не разрешено входить в систему. Например, если бы этому пользователю было разрешено войти и войти в систему графически, возникли бы серьезные проблемы из-за того, что пользовательская среда или привилегии были плохо приспособлены для запуска приложений X11. ? Если бы этот пользователь мог войти в систему, это позволило бы войти в систему удаленно как этот пользователь (для компьютеров, на которых вы выставили сетевые службы)?
Если вы когда-нибудь захотите отключить его:
Связано: Повторное отключение
root
учетной записи после ее временного включения.username
Счет имеет в/bin/false
качестве своей оболочки.Когда оболочка, подобная
bash
вашей, запускается как ваша оболочка входа в систему, она настраивает вашу среду и дает вам интерактивное приглашение для управления машиной.С
/bin/false
другой стороны, при запуске он ничего не делает и сообщает об ошибке . (/bin/true
ничего не делает и сообщает об успехе.)false
Иtrue
команды полезны в сценариях и для различных целей тестирования, но и для отключения учетной записи , так что , когда кто - то входит в систему , их Логин сессии немедленно заканчивается. Таким образом, пароль (или другие средства аутентификации) могут быть включены, и люди могут войти, но не для доступа к оболочке . Например, если есть FTP-сервер, они могут получить доступ к своей учетной записи через FTP. Если есть SSH-сервер, они не смогут получить оболочку через SSH, но они все равно могут использоватьsftp
иscp
для передачи файлов.Поскольку
username
Логин «S оболочка была нефункциональной команды типа , , и не мог работать.su username
su - username
sudo -u username -s
sudo -u username -i
Но команды, которые не дают оболочки, любят или могут работать.
sudo -u username command
su username -c 'command'
Поскольку команды могут быть запущены, вы можете изменить пользовательскую оболочку входа на что-то функциональное:
Однако это также следует делать с осторожностью, так как может быть веская причина отключить интерактивные входы в систему для пользователя.
Здесь
username
оба отключили пароль и «отключили» оболочку. Отсутствие какого-либо рабочего пароля препятствовало работе всехsu
решений на основе, в то время как отсутствие работающей интерактивной оболочки входа в систему препятствовало работе всех решений, порождающих оболочку (кроме ручного вызова оболочки, например ).sudo -u username bash
sudo -u username command
это то, что осталось.источник