我怎样才能 sudo su 并在之后更改目录?

我怎样才能 sudo su 并在之后更改目录?

我想创建一个别名来执行以下操作:

alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'

因此,然后从我的命令行中,我使用 sudo 用户登录,并且我想输入别名,userYYY以便我的 shell 现在使用userYYYpwd进行登录/a/path/that/only/userYYY/has/access

我怎样才能做到这一点?这userYYY是为了运行一些进程,它的home里面肯定有什么东西。因此,我尝试使用以下命令更改其 $HOME:

sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 

然后我从我的 shell 和我的 sudoer 文件中执行了操作sudo su userYYY。但这没有用。唯一有效的是sudo su -l userYYYY在我原来的 shell 中打开了一个新的 bash ( -bash-4.1$ ....)。

总之,我想要的是避免在 shell 中编写 2 行:

sudo su userYYY
cd /a/path/that/only/userYYY/has/access

有任何想法吗?

答案1

alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

答案2

一种选择是编辑~/.bashrc目标用户,然后cd在其中添加:

cd /a/path/that/only/userYYY/has/access

答案3

我知道这与原来的问题略有不同,但其想法是在策略禁止时以不同用户身份运行命令,而无需输入密码sudo su <user> -c

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"

答案4

对我来说,结合sudoscreen解决了:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

该命令首先切换到vagrant用户。然后 asvagrant将目录更改为/vagrant并执行npm install.

相关内容