いくつかの一般的な質問を提起する具体的な質問があります。
特定の問題:
特定の制限が適用される一連のユーザーに適用されるsudoersルールがあります。問題のルールは%pusers ALL=(ALL) NOPASSWD: /bin/vi /etc/httpd/conf/*
ユーザーが望むものcd /etc/httpd/conf
です。現在、sudoersはこれを許可していませんが、絶対パスに対してvi:実行を許可します。 sudoが許可されていることを確認する前に、相対パスがフルパスに変換されないと仮定していますが、この問題を解決する理由と方法を正確にはわかりません。sudo vi httpd.conf
sudo vi ./httpd.conf
sudo vi /etc/httpd/conf/httpd.conf
私はRHEL7を排他的に使用しており、他の* nixシステムではこれをテストしていませんが、同様の動作が見られると予想しています。
一般的な質問:
- sudoが渡された相対パスを処理する方法実装する上記の例のように横に? (相対コマンドパスではなく、コマンド実行への相対パスです。)
- sudoerルールと比較してコマンドを確認するときに、sudoがコマンドの相対実行パスを認識/変換するにはどうすればよいですか?
答え1
一般ユーザーに、sudo
または同じ編集者へのアクセス権を付与することは危険です。vi
vim
詳しくはこの質問をご覧ください。。
最新バージョンsudo
では、以下を指定できますsudoers
。
%pusers ALL=(ALL) sudoedit /etc/httpd/conf/*
その後、ユーザーは通常どおりに VISUAL または EDITOR 環境変数を使用して選択したエディタを指定し、次を使用できます。
$ sudoedit /etc/httpd/conf/httpd.conf
または
$ cd /etc/httpd/conf
$ sudoedit httpd.conf
代わりに使用することもできますsudoedit
。sudo -e
最新のsudoはこれをsudoedit
組み込みコマンドとして認識sudo
し、使用時に引数sudo
が編集するファイルのパス名でなければならないことを理解し、相対パス名を処理できます。
一般的な場合(=キーワードを使用しない場合sudoedit
)、コマンドパラメータに関する情報には既知のものがないと想定されるため、ファイルに特定のパラメータを含むコマンドをsudo
指定した場合にのみ、「sudoers
愚かな」文字列一致を実行できます。
sudo
厳密に言えば、実際にはApache設定ファイルへのアクセスを許可する必要さえありません。 Apacheは、設定ファイルを読み取ることができる限り、設定ファイルの権限が何であるかを特に気にしません。これでグループができたので、次のようにすることができます。
chgrp -R pusers /etc/httpd/conf
chmod g+rws /etc/httpd/conf
chmod g+rw /etc/httpd/conf/*
RHEL7はデフォルトで「ユーザーグループ」システムも使用するため、ユーザー値はumask
すでに002または007でなければなりません。これが真であれば、これらの単純なワンタイム設定だけでユーザーにApache設定ファイルへの書き込みアクセスを許可するために必要なすべてです。ユーザーは構成ディレクトリに新しいファイルを作成することもでき、自動的に正しいグループの所有権と権限を取得します。
実際、このシナリオでは、構成ファイルの権限を誤って台無しにする可能性が最も高い方法は、新しいファイルをルートとして追加することです。 rootユーザーは通常、グループ書き込みビット(従来は022またはより厳しい077)を持たないumaskを持ちます。 、root権限がディレクトリsetgid
権限よりも優先されます。
いくつかの新しい習慣を学ぶ必要があるかもしれませんが、この場合、「Apacheを設定するにはルートでなければなりません」という事実を忘れてしまうのは本当に良いことかもしれません。 (sudo
より多くの監査証跡を提供すると思われる場合は、構成ファイルをGitまたは他のバージョン管理システムに配置することを検討してください。)