アクセスできないディレクトリのオートコンプリート

アクセスできないディレクトリのオートコンプリート

表示/入力権限がないフォルダに対してオートコンプリートを取得しようとしています。最初の考えは、手動で完成を使用してcompgen実行することでしたが、シェルに組み込まれているように見えるので、次のように実行します。 sudoが機能しない可能性があります。sudocompgen

また、フォルダのカスタムコンプリート機能を作成する場合は、どのコマンドに対してそれらをどのようにオーバーライドしますか?私はcompleteすべてを指示したくありません。

それとも別の選択肢がありますか?

編集する

これは、ユーザーにsudo権限(任意のコマンドの実行)を付与しますが、root / suとしてログインしてrootとしてのみアクセスできる一部のフォルダに移動する必要がある場合にすばやく見つけることができる環境で役立ちます。コマンドを実行する内容がありません。sudo ls XX

答え1

あるいは、インタラクティブなsudoセッションを使用することをお勧めします。

sudo -i

または

sudo -s

ルートシェルを入手してください。

sudo -s現在の環境は維持され(たとえば、$HOME通常のユーザーのホームディレクトリです)、sudo -iルートとして初期ログインがシミュレートされるため、たとえば、$HOME行きます/root

一般ユーザーがsudoを使用できるようにタブを完成させる可能可能ですが、問題があるようです。過去 15 分間 sudo を使用していない場合は、パスワードの入力を求められます。タブ補完機能を使用しようとしたときそれ以外の場合は機能せず、再び機能する前に資格情報キャッシュをフラッシュするには、sudoを手動で実行する必要があります。そして、どうすればいいのかわからず、単純な問題に対する複雑な解決策のようです:)

答え2

あなたが本当に望むのは、高い権限を持つ限られたシェルで実行することです。問題は、ユーザーが実行しているbashシェルがそうでないことです。許可するこのディレクトリのリストを入手してください。できないオートコンプリート機能を活用してみてください。

sudoアクセス権を持つ人のためにディレクトリ全体を開くには、その人のグループを作成し、それに応じてrX権限を設定する必要があります(またはfaclsを使用する必要があります)。

sudoが特定のコマンドのみを提供している場合、ユーザーは次のことができます。

sudo -l

リストを入手してください。スマートな人なら「sudo -l」の出力をbashオートコンプリート機能が処理できるものに変換できるかもしれませんが、まだ見たことがありません。 (再び、コマンドを明示的に指定した場合にのみ機能します。)

例で行った操作を正確に実行する場合(sudoからpeopleにls)、その人のために指定されたすべてのディレクトリ+ rxを作成します。

関連情報