次のようにエイリアスを作成したいと思います。
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
次に、コマンドラインでsudoユーザーを使用してログインし、シェルがuserYYY
今。userYYY
pwd
/a/path/that/only/userYYY/has/access
どうすればいいですか?これはuserYYY
いくつかのプロセスを実行するものであり、そのホームに何かが必要です。だから私は次のように$ HOMEを変更してみました。
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
その後、シェルとsudoerファイルで実行しましたsudo su userYYY
。しかし、それはうまくいきませんでした。正しく機能した唯一の方法は、元のシェル内でsudo su -l userYYYY
新しいbash()を開くことでした。-bash-4.1$ ....
要約すると、私が望むのは、シェルに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
1つのオプションは、ターゲット~/.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
ユーザーに切り替えられます。次にvagrant
ディレクトリを次に変更して/vagrant
実行しますnpm install
。