0

/dev フォルダーから UART デバイスにアクセスして、ロボットを制御しようとしています。cgi python スクリプトを使用して、インターネットからこれを実行しようとしています。コマンド ラインで実行するとコードは正常に動作しますが、サーバー経由で実行すると 500 エラーが発生します。これはある種のアクセス許可の問題であると確信していますが、解決方法がわかりません。ここで何が起こっているのか、またはどのように修正できるのかを誰かが知っていれば、助けていただければ幸いです。

誰かが見たいと思ったら私のpythonコードを投稿できますが、問題はコードではなく、コードの実行にあると思います。

前もって感謝します、

マイケル、

4

1 に答える 1

0

デバイスファイルのグループをチェックすることができます:

adam@sabayon ~ $ ls -lash /dev/ttyS*                                                                                                                                                                                             
0 crw-rw---- 1 root uucp 4, 64 03-10 13:20 /dev/ttyS0                                                                                                                                                                            
0 crw-rw---- 1 root uucp 4, 65 03-10 13:20 /dev/ttyS1                                                                                                                                                                            
0 crw-rw---- 1 root uucp 4, 66 03-10 13:20 /dev/ttyS2                                                                                                                                                                            
0 crw-rw---- 1 root uucp 4, 67 03-10 13:20 /dev/ttyS3 

私にとってはuucpです。そして、cgi スクリプトを開始するユーザーをこのグループに追加します (私のシステム uucp の場合)。ただし、このユーザーが開始した他のすべての cgi スクリプトも UART へのアクセスを許可されることに注意してください。

編集:

Apache Webサーバーの場合、suEXECが解決策になるようです。

suEXEC 機能により、Apache ユーザーは、呼び出し元の Web サーバーのユーザー ID とは異なるユーザー ID で CGI および SSI プログラムを実行できるようになります。通常、CGI または SSI プログラムが実行されるとき、Web サーバーを実行している同じユーザーとして実行されます。

したがって、cgiスクリプト用の新しいユーザーを作成して正しく構成し、apacheでスクリプトで使用できるようです。

suEXEC のドキュメントは次のとおりです: http://httpd.apache.org/docs/2.0/suexec.html

私はそれを使用したことはありませんが、それが役立つことを願っています。

于 2012-03-10T14:27:06.293 に答える