どうすればすぐにsudo suしてディレクトリを変更できますか?


13

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

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。しかし、それはうまくいきませんでした。機能したのは1つだけでしたsudo su -l userYYYYが、元のシェル(-bash-4.1$ ....)内に新しいbashが開きました。

要約すると、私が欲しいのは、シェルに2行を記述する必要を単に回避することです。

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

何か案は?

回答:


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

正常に動作するようですが、このエラーを削除する方法、または問題かどうかは不明です。ubuntu 14.04LTSを使用して、debianに問題があることに気付きました...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
実際、しばらく使用した後、ターミナルがこの方法を使用してかなり頻繁に強制終了されることに気づきました(切断は約15-30分、定期的に、私のターミナルは切断前に約6時間続きます)
sonjz

ただ、これを掘っ、この動作は、セキュリティ修正によるものです:unix.stackexchange.com/questions/65843/...
sonjz

これは私が私の編集役立っている.bashrcにファイルをsudoその後、cd2本の別々のラインを持つものとしてだけで働いていなかったところ。
RozzA

2

1つのオプションは~/.bashrc、ターゲットユーザーを編集し、cdそこに追加することです。

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

0

短い答え-できません。sudo suそれはに到達する前に終了する必要があります新しいシェルを開始するcdコマンドを。


0

私にとっては、組み合わせsudoscreenうまくいきました:

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

このコマンドは、最初にvagrantユーザーに切り替えます。次にvagrant、ディレクトリをに変更し/vagrantて実行しnpm installます。


0

これは元の質問と少し異なることはわかっていますが、ポリシーで禁止されてsudo su <user> -cいる場合は、パスワードを入力せずに別のユーザーとしてコマンドを実行するという考えです。

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.