Redhat マシンにサービス アカウントを作成しました。このアカウントの目的は、作成した bash スクリプトを実行することです。
bash スクリプトは基本的に、cpuinfo、ifconfig、ネットワーク ステータス、ポート、プロセス、ファイル権限、デバイス ステータスなどのシステム プロパティをチェックします。
では、サービス アカウントで、作成したスクリプトのみを実行するにはどうすればよいでしょうか。それ以外に、このアカウントは何も実行すべきではありません。サービス アカウントの資格情報を使用してサーバーにログインした場合でも、スクリプトの実行を除き、ls、cp、mv、date などの基本的なコマンドさえ実行できないようにする必要があります。
答え1
あなたの主題に基づいてLinux でアカウントのアクセスを制限する方法、
そのアカウントと、そのアカウント用の新しいグループを作成します。グループ名は、たとえばアカウント名と同じにすることができます。その結果、このユーザー アカウントだけがこの新しいグループに含まれ、システム上の他のアカウントには、この新しいサービス アカウント名とサービス アカウント グループに関連する所有者またはグループ権限がないため、完全に一意になります。次に、bash スクリプトをこのサービス アカウントとサービス グループ名で所有するように設定します。さらに、このアカウントのログイン シェルを または に設定し/bin/false
ます/bin/nologin
。
/sbin/nologin と /bin/false の違いは何ですか
ただし、スクリプトを実行するためだけに新しいアカウントを作成したことに注意してください。あなた作成されました。セキュリティの観点からは、ほとんど価値のない追加手順を実行しただけであり、知らないうちにバックグラウンドで実行されているこの新しいサービス アカウントを目にしたあなた以外の人は、それが一体何なのかと首をかしげるでしょう。
より良い方法は、それはあなたのスクリプトなので、それをあなた自身のものとして保持することです -あなたは有効なユーザーであり、実行中のプロセスに結び付けられると誰もがあなたのアカウントを認識します- そして、スクリプトのsetuidビットを使用して、タスクを実行する権限を付与します。システムプロパティを確認するために言及したほとんどの作業にはルート権限が必要です。
私はSETUIDを利用すると言いましたが、それは間違っていました。シェルスクリプトその理由は次のように説明できます。 シェルスクリプトでsetuidを許可する
ただし、必要な処理を実行するプログラムを作成してコンパイルし、その実行可能ファイルの所有者が自分である場合は、その実行可能ファイルで SETUID を利用できます。