Debian 9.2で動作するBeagleBone Blackボードのライトをオン/オフする小さなC++アプリがあります。実行中のユーザより実行可能なパーミッションを与える
これは、テキストファイルを更新することで行います。
// Turn light on
fs.open("/sys/class/leds/beaglebone:green:usr0", std::fstream::out);
fs << "1";
fs.close();
標準ユーザーとしてプログラムを実行すると、エラーなしで実行されますが、ライトは変化しません。
sudo
でプログラムを実行すると、すべて正常に動作し、ライトが機能します。 私は、これらのファイルにはより高いアクセスが必要だと思います。
私はLinuxの権限に精通していませんが、ユーザーができなかったファイルにプログラムからアクセスできるようにする方法はありますか?
私は20年前にバイナリスーパーユーザーフラグを与えることができたと思いますが、これは非常に間違った解決策です。まだ動作しているかどうか、またはセキュリティポリシーと衝突するかどうかは不明です。影響を受けるビーグルボーンファイルが特定のグループに属していて、書き込みが可能なグループ権限を持っている場合は、そのグループをユーザーに追加します(バイナリを実行します)。とにかく、私は管理者ではなく、単にLinuxのユーザーです。だから、グループの仕組みについて何か混乱するかもしれません。いずれにしても、これは純粋に* nix権限に関するもので、C++やプログラミングとは関係ありません。 – Ped7g
ファイルへの書き込み権限を昇格する必要がある場合は、昇格した権限でプログラムを実行する必要があります。その周りには方法がありません。ただし、あなたができることは、([setuid](https://www.gnu.org/software/libc/manual/html_node/Setuid-Program)を使用して昇格された権限で実際にタスクを実行する必要があるまで、権限を削除することです。 -Example.html)。 –
感謝してくれてありがとう。私は完全なLinuxのnoobであり、25年以上のMSスタック開発から来ているので、いくつかのコンセプトについて私の頭を包み込むのは難しいです。 – user3953989