マイコンピュータが通信できる3Dプリンタがあります/dev/ttyACM0
。
crw-rw---- 1 root uucp 166, 0 16 nov 14:58 ttyACM0
3D印刷アプリケーションをrepetierHost
実行するには、デバイスへの読み取り/書き込みアクセス権が必要です。準備なしに「素早く」アプリケーションを実行すると、アプリケーションは実行されません。
アプリケーションをrootとして実行すると機能します。
(セカンダリ) グループの一般ユーザーとしてアプリケーションを実行してもuucp
動作しません。
/dev/ttyACM0
権限フラグを提供しrw-rw-rw-
、通常のユーザーとして実行すると機能します。
(なぜ)uucp
グループを介して受け取った権限がアプリケーションに渡されないのですか?
単にファイル権限を付与することに反対するわけではありませんが、rw-rw-rw-
デバイスの接続が切断されて再接続されると、その権限はリセットされます。グループでこれを行うことができない場合にuucp
権限フラグを永久に変更するにはどうすればよいですか?
答え1
アプリケーショングループrepetierHost
をに設定uucp
し、SGIDビットを設定します(スクリプトではなく実際のバイナリの場合)。
chgrp uucp repetierHost
chmod g+s repetierHost
RepeatierHostがスクリプトの場合は、それを移動して呼び出すrepetierHost.sh
小さなCプログラミングラッパーを作成することを検討できます。repetierHost
repetierHost.sh
たとえば、
#include <stdlib.h>
int
main(int argc, char *argv[])
{
system("/path/to/repetierHost.sh");
}
答え2
見つけました。sg
私にとって必須の命令のようです。
シンガポール- 異なるグループIDでコマンドを実行する
だから私は次のような最小限のラッパーを書いた。
#!/bin/bash
sg uucp /usr/bin/repetierHost.sh
これは非常にうまく機能します。