主要顧客のLinuxサーバーでは、長年にわたってルートでbashスクリプトを実行してきました。さて、セキュリティ上の理由でこれを変更したいと思います。
一部のスクリプトは、「service filescontrol start」などの「service」コマンドによってトリガーされます。
クライアントのデフォルト管理者はまた、これらのサービストリガースクリプトを通常のユーザーとして実行したいと考えています。
しかし、「service」コマンドの概念はrootユーザーに縛られていませんか?
答え1
service
他と同じプロセスです。ほとんどの場合です/sbin/service
。現在、独自の専門分野を持つ多くの「init」マネージャ(RC-Scripts、upstart、systemd、svcadm...)があるので、起動service
スクリプトの管理に使用することをお勧めします。
変更する必要があるのは基本システムに関連付けられています。
/etc/init.d/crond
たとえば、スクリプトを呼び出すことやinit-rcシステム(最も一般的なもの)を呼び出すservice crond
ことは同じです。
$ service crond status
crond (pid 1837) is running...
$ /etc/init.d/crond status
crond (pid 1837) is running...
しかし、systemdを使用すると、すべてがバイナリ「systemd」によって管理されるため、問題ははるかに難しくなります。
したがって、多くのシステムや例外を管理したくない場合は、使用を検討できますsudo
。それ以外の場合は、ユーザーラムダでスクリプトを起動するか、「set-uid」スクリプトを使用できます。