Redhatコンピュータにサービスアカウントを作成しました。このアカウントの目的は、私が作成したbashスクリプトを実行することです。
bashスクリプトは、主にcpuinfo、ifconfig、ネットワークステータス、ポート、プロセス、ファイル権限、デバイスステータスなどのシステムプロパティを確認します。
今、私のサービスアカウントに自分が作成したスクリプトのみを実行させるにはどうすればよいですか?アカウントが何もしないことを除いて、誰かがサービスアカウントの資格情報を使用してサーバーにログインしても、スクリプトの実行以外に何もしないでください。 ls、cp、mv、dateなどの基本的なコマンドです。
答え1
あなたのテーマに応じてLinuxで特定のアカウントへのアクセスを制限する方法、
アカウントとそのグループを作成します。たとえば、グループ名はアカウント名と同じです。その結果、そのユーザーアカウントのみが新しいグループにあり、そのグループは完全に一意であり、システムの他のアカウントには、新しいサービスアカウント名とサービスアカウントグループに関連付けられている所有者またはグループ権限がありません。次に、そのサービスアカウントとサービスグループ名が所有するようにbashスクリプトを設定します。また、このアカウントのログインシェルをまたは/bin/false
に設定します/bin/nologin
。
/sbin/nologinと/bin/falseの違いは何ですか?
しかし、覚えておいてください。スクリプトの実行のみを目的とした新しいアカウントを作成しました。あなた作られた。私はセキュリティの観点からあまり価値のない追加の手順を実行しましたが、今バックグラウンドで実行されているこの新しいサービスアカウントを無意識に見ている人は頭を傷つけ、これが一体何なのか疑問に思います。
より良い方法はあなたのスクリプトなので、あなたのものにしてください。お客様は有効なユーザーであり、一部の実行中のプロセスにバインドすると、誰もがあなたのアカウントを認識します。- 次に、システム属性の確認について述べたほとんどのコンテンツにはroot権限が必要であるため、スクリプトのsetuidビットを使用して操作を実行する権限を付与します。
SETUIDの活用について言及しましたが、現在使用されているSETUIDは正しくありません。シェルスクリプト、その理由はここで説明することができます。 シェルスクリプトでsetuid設定を許可する
ただし、必要なタスクを実行するためにプログラムを作成してコンパイルし、そのプログラムの実行可能ファイルを所有している場合は、実行可能ファイルでSETUIDを利用できます。