如何获得另一个非root用户的交互式shell?


14

我使用的是Ubuntu 10.04 LTS服务器,具有默认的安全模型(root锁定,sudo用于提升特权)。sudo -i当我需要以提升的特权运行一系列命令时,或者当我需要在仅具有root特权的目录中四处浏览时,我偶尔会喜欢使用。

有时,当设置将以其自己的非特权系统帐户(adduser --system --group --no-create-home --disabled-login some-daemon-user)运行的软件时,我发现我需要以该用户身份而不是本人或root 用户身份运行一系列命令。我尝试使用sudo -i -u some-daemon-user,但是它只是返回一个1状态而没有任何错误消息。

我检查了syslogmessagesauth,并debug在日志文件中/var/log,其中没有包括任何消息,提及sudo或有问题的帐户。

因此,是否有可能成为另一个非root用户,即sudo风格,而不仅仅是设置密码并登录(以此身份)?我的系统是否以某种方式“损坏”或我做错了?

Answers:


14

问题是这些用户的标准外壳通常设置为/bin/false,出于安全原因,您不应更改此设置。但是您仍然可以运行例如:sudo -u www-data /bin/sh


1
您能否提供有关“安全原因”的更多详细信息?如果像我sudo前面所说的那样,以用户身份运行Shell会有所不同吗?
Calrion

1
原因是,任何攻击者以系统用户身份完成登录(即通过利用登录程序中的错误),都不太可能最终获得有效的外壳。因此,即使只是出于良好的业力,您也应该保留设置在/ etc / passwd文件中的设置。通过sudo直接调用外壳与此无关。
保罗·汉施(PaulHänsch)2012年

因此,问题在于在passwd文件中设置外壳程序,而不是以用户身份实际运行外壳程序。知道了!
Calrion

9

sudo -i运行由目标用户的密码数据库条目指定的外壳程序,该外壳程序/bin/false适用于您的系统用户。

采用

 sudo -u some-daemon-user bash

要么

sudo -u some-daemon-user -H bash

如果要为目标用户设置$ HOME环境变量集。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.