私がアクセスする特権を持っていないディレクトリがあるとしましょう。は、これまですべてのシェルに組み込まれたシェルsudo cd fooであるため、明らかに機能しませんcd。
これまでのところ、sudo bashルートプロンプトを取得するために使用しています(より良い方法があることはわかっています)。その後、私cdはディレクトリに侵入することができます。
これを行うより良い方法はありますか?
cd。つまり、は必要ありません。
sudo ls。
私がアクセスする特権を持っていないディレクトリがあるとしましょう。は、これまですべてのシェルに組み込まれたシェルsudo cd fooであるため、明らかに機能しませんcd。
これまでのところ、sudo bashルートプロンプトを取得するために使用しています(より良い方法があることはわかっています)。その後、私cdはディレクトリに侵入することができます。
これを行うより良い方法はありますか?
cd。つまり、は必要ありません。
sudo ls。
回答:
いいえ、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
sudo su -代わりに使用するのはなぜsudo -iですか?どちらも必要なのはCAP_DAC_READ_SEARCH機能だけですが、すべてのスーパーユーザー権限を与えます。
sudoはSolaris環境でしsudoたが、そのバージョンにはこのスイッチが含まれていませんでした。見にsudoのchangelogそのオプションが)、私はこれで自分と付き合っていますが、あなたが8を尋ねた2004年ゲスで追加されたように見えます。両方を含めるように回答を修正します。ありがとう!
sudo -Hiホームディレクトリも設定するので、私は好みです(私のディストリビューションでは、デフォルトでホームを設定していません。デフォルトはさまざまです)。そうしないと、新しいファイルが作成された場合、ルート所有のファイルが家に残る可能性があります。
いいえ、ありません。rootとして実行するシェルが必要です。
cdシェルまたは同等のプロセスを実行しているのでない限り、それはかなり無意味です。
cdrootになりたいのですか(実際にrootシェルにいるのでない限り)?