我想创建一个别名来执行以下操作:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
因此,然后从我的命令行中,我使用 sudo 用户登录,并且我想输入别名,userYYY
以便我的 shell 现在使用userYYY
和pwd
进行登录/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
对我来说,结合sudo
并screen
解决了:
sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'
该命令首先切换到vagrant
用户。然后 asvagrant
将目录更改为/vagrant
并执行npm install
.