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
これは、スクリプトが特別な注意を払って作成され、呼び出し元が侵入する機会がないようにスクリプトに権限を追加するためです。この種の解決策は慣れていないようで、専門家のアドバイスを求めることをお勧めします。