起動時に自動的に実行される組み込みシステムで実行されるアプリケーションがあります。一部の機能にはシリアルポートの読み取りと書き込みが含まれるため、ソフトウェアにroot権限が必要です。私のデスクトップでは、プログラムをそのまま実行でき、問題ないので問題ありませんsudo
。私の組み込みデバイスではこれを行うことができないので、私が望んでいたのは、コードをrootとして実行できないようにするが、必要以上にシリアルポートにアクセスするためのroot特権を持つことができるLinuxシステム関数があることです。これはセキュリティの観点からはおそらく良い考えではないことを理解していますが、組み込みデバイス上にあるため、代替手段はありません。
1 に答える
10
アプリケーションがシリアルポートデバイスノードにアクセスできるように、シリアルポートデバイスノードのアクセス許可を変更することを検討しましたか?
たとえば、すべてのアプリケーションが/dev/ttyS0
シリアルポートにアクセスできるようにするには:
chmod a+rw /dev/ttyS0
よりきめ細かい制御を提供するために、個別のユーザーグループとchgrp
シリアルポートデバイスノードを作成できます。
chgrp serial /dev/ttyS0
chmod 0660 /dev/ttyS0
その後、必要なのは、アプリケーションがserial
ユーザーグループ内でそのまま実行されていることを確認することだけです。
または、アプリケーションユーザーをデバイスノードの唯一の所有者にすることもできます。
chown appuser /dev/ttyS0
chmod 0600 /dev/ttyS0
デバイスノードにアクセスするためだけにroot権限を要求することは、正しいアプローチではありません...
于 2012-07-21T06:56:29.447 に答える