どうすればルートとしてディレクトリにcdできますか?


10

私がアクセスする特権を持っていないディレクトリがあるとしましょう。は、これまですべてのシェルに組み込まれたシェルsudo cd fooであるため、明らかに機能しませんcd

これまでのところ、sudo bashルートプロンプトを取得するために使用しています(より良い方法があることはわかっています)。その後、私cdはディレクトリに侵入することができます。

これを行うより良い方法はありますか?


なぜcdrootになりたいのですか(実際にrootシェルにいるのでない限り)?
Tripleee 2013年

ディレクトリがルートによって所有されていて、グローバル実行がなかった場合
strugee

1
それは本当に有効なケースではありません。ディレクトリを読み取ることができると便利な場合がありますが、そのディレクトリを作業ディレクトリにする必要はありませんcd。つまり、は必要ありません。
tripleee 2013年

ええ、受け入れられた答えが私ができることを指摘するまで、私はそれを理解しませんでしたsudo ls
ストジー

回答:


12

いいえ、cdルートにならずにルートのみを許可するディレクトリにアクセスする方法はありません。この制限があるディレクトリが多すぎてはいけません。ほとんどの/etc/shadow場合、ファイルや特定のログファイルなどの特定のファイルへのアクセスです/var/log

sudo ls <dir>代わりに使用してそれらを表示できますbash。また、を使用sudoしてrootになる場合、通常はのsu代わりにユーザー(コマンド)を設定するbashので、代わりに次のコマンドを使用します。

$ sudo su -

sudoの-iスイッチでも同じことができます。

$ sudo -i

に関するmanページからの抜粋 sudo -i

-i(初期ログインをシミュレート)オプションは、ターゲットユーザーのpasswd(5)エントリで指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、コマンドはシェルに渡されて実行されます。それ以外の場合は、対話型シェルが実行されます。

アクセスできないファイルについては、次のいずれかのsudoコマンドを使用できます。

$ sudo tail /var/log/messages

$ sudo less /etc/shadow

3
sudo su -代わりに使用するのはなぜsudo -iですか?どちらも必要なのはCAP_DAC_READ_SEARCH機能だけですが、すべてのスーパーユーザー権限を与えます。
ステファンChazelas

@StephaneChazelas-その切り替えに気づいたことはありません。私が最初に紹介したのsudoはSolaris環境でしsudoたが、そのバージョンにはこのスイッチが含まれていませんでした。見にsudoのchangelogそのオプションが)、私はこれで自分と付き合っていますが、あなたが8を尋ねた2004年ゲスで追加されたように見えます。両方を含めるように回答を修正します。ありがとう!
slm

@StéphaneChazelas同意する。sudo -Hiホームディレクトリも設定するので、私は好みです(私のディストリビューションでは、デフォルトでホームを設定していません。デフォルトはさまざまです)。そうしないと、新しいファイルが作成された場合、ルート所有のファイルが家に残る可能性があります。
doug65536 2015年


0

そうですね。ただし、次の回避策があります。

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