sudo suを実行し、後でディレクトリをどのように変更できますか?

sudo suを実行し、後でディレクトリをどのように変更できますか?

次のようにエイリアスを作成したいと思います。

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

次に、コマンドラインでsudoユーザーを使用してログインし、シェルがuserYYY今。userYYYpwd/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

関連情報