为什么主管的-i参数对于获取交互式shell很重要?

时间:2016-09-15 20:13:12

标签: linux bash shell

为了冒充超级用户1我需要像这样运行命令

sudo -u superuser1 -i

我确实尝试sudo -u superuser1这意味着切换到superuser1并且它完全有意义,但它不起作用

我还阅读了关于sudo手册页-i选项

  

-i, - login   运行目标用户的密码数据库条目指定的shell   作为登录shell。这意味着登录特定的资源文件等   因为.profile或.login将由shell读取。如果命令是   指定,它通过shell的-c传递给shell执行   选项。如果未指定任何命令,则执行交互式shell。   sudo尝试在运行之前更改为该用户的主目录   贝壳。该命令使用类似于a的环境运行   用户将在登录时收到。命令环境部分在   sudoers(5)手动文档-i选项如何影响环境   在sudoers策略正在使用时运行命令。

我可以看到,它将命令置于交互模式,但它没有解释原因 sudo -u superuser1不起作用。

任何人都可以解释-i的确切含义,以及为什么没有它不起作用

2 个答案:

答案 0 :(得分:1)

这是明确地在您在问题中引用的手册页内容中给出的:

  

如果未指定命令,则执行交互式shell。

特定于sudo -i的行为。如果您需要交互式shell,则需要运行sudo -i或类似sudo -u user1 -- bash -i -l的内容。

答案 1 :(得分:0)

正如您在手册页中看到的那样,-i选项不仅可以将命令置于交互模式,还可以执行.profile和大概.bashrc的内容。我想,要运行命令,必须指定一个使用“-i”选项时自动加载的环境变量。