
私がアクセスできないディレクトリがあるとしましょう。明らかに、すべてのシェルに組み込みシェルがあるsudo cd foo
ため、機能しません。cd
sudo bash
これまで、私はルートプロンプトを取得するために(はい、より良い方法があることを知っています)使用してきました。その後、cd
カタログに移動して閲覧できます。
もっと良い方法がありますか?
答え1
cd
いいえ、ルートのみを許可し、ルートは許可しないディレクトリに入る方法はありません。この制限が適用されるディレクトリが多すぎてはいけません。ほとんどの場合、特定のファイルへのアクセスが制限されます/etc/shadow
。/var/log
sudo ls <dir>
代わりに to を使ってこれを見ることができますbash
。またsudo
、to を使用して root になるときは通常、代わりにユーザー (su
コマンド) を設定しようとしているので、bash
次のコマンドを使用します。
$ sudo su -
-i
sudoスイッチを使用して同じことを行うこともできます。
$ sudo -i
関連マニュアルページから抜粋sudo -i
-i(初期ログインシミュレーション)オプションは、ターゲットユーザーのpasswd(5)エントリで指定されたシェルをログインシェルとして実行します。これは、シェルが.profileや.loginなどのログイン固有のリソースファイルを読み取ることを意味します。コマンドが指定されると、実行のためにシェルに渡されます。それ以外の場合は、対話型シェルが実行されます。
アクセスできないファイルの場合は、次のいずれかのコマンドを使用できますsudo
。
$ sudo tail /var/log/messages
$ sudo less /etc/shadow
答え2
いいえ、ありません。ルートとして実行されるシェルが必要です。
答え3
はい、できません。ただし、回避策は次のとおりです。
sudo sh -c "cd restricted-dir; some_command"