Oracle 8システムに特定のセキュリティ対策を設定する必要があります。
Unix グループに一部のユーザーが追加されます。
これらのユーザーはsudoers / wheelグループにはならず、グループに管理者権限を付与してはいけません。
このグループに属する場合、そのユーザーは特定のスクリプトを実行できますが、変更することはできません。
これらのスクリプトは、そのユーザーが実行するときに特定のファイルを読み取って変更できる必要がありますが、ユーザーは他の方法でこれらのファイルにアクセスしたり読み取ったりすることはできません。
この配列が機能するには、Unixファイルの権限/フォルダ構造/グループメンバーシップをどのように設定する必要がありますか?
答え1
ユーザーは新しいグループに簡単に追加できます。スクリプト(実行ファイルとは異なり)はsetgid / setuid権限を使用して権限を割り当てることができないため、グループは選択したsudoers
スクリプトセットを実行するときにユーザーに権限を付与するためにファイルにエントリを必要とします。 (この権限はアクセスする必要はなく、実際にはできませんroot
。)
初期点。私たちはこのグループと呼び、ユーザーと一緒にops
います。彼らは私たちが生成する必要があるユーザー権限でスクリプトを実行できるはずです。ユーザーとグループに同じ名前を使用することを好むかもしれませんが、ここではどちらがどちらであるかを明確に区別しました。alice
bob
/opt/scripts
privops
まず、ターゲットユーザー、メンバーシップグループを作成し、ここにユーザーを追加します。
useradd privops
groupadd ops
usermod -a -G ops alice
usermod -a -G ops bob
次に、次のようにvisudo
ファイルに新しい行を追加しますsudoers
(または自分で作成することをお勧めしますvisudo /etc/sudoers.d/ops
)。
%ops ALL=(privops) NOPASSWD: /opt/scripts/*
この時点で、AliceとBobはユーザーとしてsudo
このディレクトリからスクリプトを実行できます。ディレクトリ内のスクリプトは、グループメンバーのみが実行できることを確認してください。/opt/scripts
privops
ops
chown root:ops /opt/scripts/*
chmod ug=rx,o= /opt/scripts/*
制限付きアクセスファイルがそのユーザーアカウントの所有であり、privops
そのユーザーアカウントでのみ読み書きできることを確認する必要があります。
chown privops:ops /opt/privdata/*
chmod u=rw,go= /opt/privdata/*
使用例(最初のパス):
# As alice
sudo -u privops /opt/scripts/myscript arg1 arg2…
スクリプトの使いやすさを高めるには、スクリプトを自分で呼び出すようにしてください(sudo
まだターゲットユーザーではない場合)。
#!/bin/sh
if [ "$(id -nu)" != 'privops' ]
then
exec sudo -u privops "$0" "$@"
exit 1
fi
# original code continues from here…
その後、AliceとBobはこれらのコマンドを使用して自分のコンピュータに追加することもできます。$PATH
/opt/scripts/myscript arg1 arg2…
# Or
export PATH="$PATH:/opt/scripts"
myscript arg1 arg2…
/opt/scripts
これは、スクリプトが特別な注意を払って作成され、呼び出し元が侵入する機会がないようにスクリプトに権限を追加するためです。この種の解決策は慣れていないようで、専門家のアドバイスを求めることをお勧めします。
答え2
これを別の方法で行うことを検討してください。ユーザーが昇格した権限でスクリプトを実行できるようにするのではなく、これらのユーザーがより制限されたタスクを実行し、別のプロセスを使用してそのタスクと応答を監視できるようにします。
/opt/commands
これを達成する1つの方法は、特定の権限を持つグループ(おそらく)のユーザーが書き込むことができるディレクトリを設定することです。削除制限他人が所有しているファイルを削除できないようにフラグを立てます。
これにより、専用ユーザーとして実行される別のプロセスがそこで新しいファイルを見つけます(inotifyを使用するか、10分ごとに実行して確認するなど)。新しいファイルが次の場合注意深く定義された特殊名のリスト、対応するスクリプトを実行して隠しファイルを修正します。 「コマンド」ファイルには、入力として使用できるコンテンツも含めることができます。この入力を「削除」し、可能な限り使用しないように注意してください。処刑された- しかし、これは制限されたシェルスクリプトを安全にするよりも簡単な問題です。 (それでも壊れやすい!)
この間接的なアプローチは、ユーザーが実際に持つ秘密ファイルを読み書きする権限ですが、制限する必要があります。実際にこの方法。
これは「システム管理者が機能する」ハッキングです。私のシステム管理者として、私はこの点について全く恥ずかしがり屋を感じません。ただし、ファイルシステムベースのアプローチを使用する代わりに、以下を使用することをお勧めします。バス今すぐ基本的に、これらの状況のために設計されています。。