web-dev-qa-db-ja.com

スーパーユーザーとしてcdを実行する方法

ターミナルからディレクトリにcdしたいのですが、アクセスが拒否され、Sudo cd (directory)と入力すると、sudoがcdコマンドをサポートしていないというエラーが返されます。 Sudo gnome-terminalを使用してルート権限で新しいターミナルウィンドウを起動できますが、同じ非ルートターミナルウィンドウから使用できるソリューションが必要です。 cdコマンドにsudoとの互換性を持たせる方法はありますか?

1
cheesits456

cdSudoと直接使用することはできないと思います。 SudoSudo lsなどの実行可能ファイルを呼び出すことができますが、cdはシェルの組み込みコマンドです。つまり、ls/bin/ls)の実行可能スクリプトを含むファイルはありますが、cdのファイルはないため、cdSudoと共に使用することはできません。

2

確かに、次のコマンドを実行できます。

Sudo sh -c "cd somedirectory"

技術的には、起動したサブシェルの現在のディレクトリを変更します。問題は、サブシェルがすぐに終了し、メインシェルのディレクトリが変更されないことです。

主な問題は、ディレクトリにcdできない場合、現在のアカウントでその中のシェルを実行できないことです。

回避策は、この権限を持つユーザーアカウントに切り替えることです。もちろん、ルートが最も簡単な選択です。

Sudo sh -c "cd somedirectory; sh"
0
jlliagre