
CentOSなのにこれのために別の相関はないようです。しなければならないコアLinuxの問題だと思います。 CentOSシステムにApache Kafka(Java実行可能ファイル)をインストールして実行しようとすると、通常Linuxに適用される質問がありました。
シェルスクリプトまたはデフォルトの実行可能ファイル(例:)をjava
実行すると、スクリプト/実行可能ファイルは実行中のユーザーを表しますか、またはオペレーティングシステムでスクリプト/実行可能ファイルが実行されているユーザー(例:スクリプト実行ユーザー)を表しますか? )/実行可能ファイル)?
プロセスがどのユーザーとして実行されているかを判断することは可能ですか?重要性できるスクリプト/アプリケーションをrootまたは他の特定の種類のユーザーとして実行する必要があることを指定しますか?
とにかく、rootでプロセスを実行することと、権限のないユーザーでプロセスを実行することに関する一般的な警告が表示されるのはなぜですか?
答え1
短い答え:両方。
より長くより便利な答え:デフォルトでは、プログラムはプログラムを起動したユーザーとして実行されます。ただし、プログラムが作成され、正しい権限が付与されると、プログラムはroot権限および/または「システム」ユーザーとして再実行できます。ただし、プログラムには、パッケージングとインストールのプロセス、またはそのコンピュータ管理者が行った操作によって、この機能を明示的に付与する必要があります。
この一般的な警告は、UNIXとLinuxの歴史的経験によると、不必要に上昇した(つまりroot)権限を持つプログラムを使用すると、システムに悪影響を及ぼすことが多いためです。これは、データの破損、システムの残りの部分を使用できない、または応答しないようにする暴走プロセス、意図しない方法で攻撃者がシステムにアクセスできるようにするプロセスによって発生する可能性があります。
答え2
「シェルスクリプト」が実行されると、スクリプトを実行するユーザーの権限で実行されます。パッケージマネージャ(yum、aptなど)を使用してインストールされたほとんどのサービス(kafka、redis、nginxなど)は、これらのサービスを簡単に制御し、これらのサービス(apache、redis、nginx)に関連するほとんどすべてを生成するためにインストールされたヘルパースクリプトです。があります。など)これらのヘルパースクリプトは最初にrootとして実行され、次にサービスに割り当てられたサービスユーザーに権限を付与します。これにより、承認されたユーザー(つまり、「sudo service kafka start」を実行する権限を持つユーザー)のみがこれらのサービスを効果的に制御できます。これは、システム管理者のSallyがkafkaとnginxを起動、停止、および再起動できることを意味しますが、開発者であるJimはkafka(または同様のもの)を起動および停止することに制限される可能性があります。 Javaユーザーは管理者が作成できますが、RubyユーザーやPythonユーザーとは異なり、実際にはそうではありません。代わりに、サービス所有権は通常、特定のサービスに関連するサービスユーザーに固定されます。
一部のプロセスはrootとして実行されます(通常、sshサーバーデーモンはrootとして実行されます)。他のプロセスはrootで始まることを拒否します(postgresqlはそのうちの1つです)。
/etc/init.d/someservice(または/etc/init/someservice.conf)でサービスのヘルパースクリプトを調べると、権限の昇格または低下を引き起こす実際のスクリプトがここにエンコードされています。あるいは、stephanユーザーとしてログインし、/usr/sbin/redis-server -c /etc/redis.confなどの操作を実行した後、別のウィンドウでプロセスを確認すると、redisがStephenの所有であることがわかります。
お役に立てば幸いです。