hakaru_plus
2018年4月10日 14時21分
お世話になります。山下と申します。
Armadillo-IoT-G3起動に、root権限を持たないユーザ(hakaru)で自動ログインし、
LED出力制御とSW入力制御を行うプロセス(a.out)を自動実行させる予定です。
自動実行の前に、バックグランドでプロセスが期待通りに動作するかどうかを、
プロンプトに『hakaru@armadillo:~/test$ sudo ./a.out &』を入力して確認したのですが、
プロセスの起動は掛かりませんでした。
フォアグランドでプロセスが期待通りに動作するかどうかを、
プロンプトに『hakaru@armadillo:~/test$ sudo ./a.out』を入力して確認したところ、
期待通りにプロセスが動作しました。
その後、バックグランドでプロセスが期待通りに動作するかどうかを、
プロンプトに『hakaru@armadillo:~/test$ sudo ./a.out &』を入力して確認したところ、
期待通りにプロセスが動作しました。
これらのことから、起動後初めてのプロセス実行で、hakaruユーザ用のパスワードを入力できない事が、
プロセスが起動しない原因だと予想はしたのですが、その解決方法がわかりません。
なにか良い解決方法はないでしょうか?
コメント
hakaru_plus
at_takumi.ando
a.out でどのようなパーミッションでCSVファイルを生成しているのか分かりませんが、
適切なパーミッションで、適切な場所にCSVファイルを配置すれば
root以外のユーザーでリモートからCSVファイルを取得することができます。
CSVファイルのパーミッションが問題であれば、chmodでパーミッションを変更(harukaがreadできるような権限)し、
ユーザー haruka でリモートからアクセスできるディレクトリのパーミッションが問題であれば、これもchmodで変更するか
SSHやFTPの設定で適切なディレクトリを設定するべきだと思います。
at_takumi.ando
hakaru_plus
at_takumi.ando
安藤です。
a.out を実行するユーザーが何者であるか ということと、
リモートログインしてCSVファイルを取得するユーザーが何者であるか ということとは関係ありません。
目的は、haruka というユーザーでリモートログインし、a.out が生成したCSVファイルを取得すること
だと認識していますが、合っていますか?
ポイントは、haruka がリモートアクセスできるディレクトリに、CSVファイルを適切なパーミッションで配置する ということです。
a.out はCソースをビルドしたバイナリと予想しますが、a.outのソース中で適切なパーミッションを指定してCSVを生成するようにもできますし、
シェルスクリプトで a.out を実行したあとにchmodする方法もあると思います。
C言語関数としてのchmod
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/chmod.2.html
Linuxコマンドとしてのchmod
https://linuxjm.osdn.jp/html/GNU_fileutils/man1/chmod.1.html
どちらの方法でも rc.local に記述するか、systemdでデーモンとして自動実行するのが一般的でスマートだと思います。
また、
>root権限付きユーザ
とは root のことだと認識していますが、合っていますか?
それともsudoner(sudoを許可されているユーザー)のことでしょうか?
haruka というユーザーがsudonerであるということは、sudoを使えば
root権限でコマンドを実行できるということなので、rootが直接実行するのと変わりません。
(厳密には、sudoで実行できるコマンドに制限を掛けることができるので、差異があります)
at_takumi.ando
hakaru_plus
at_syunya.ohshio
大塩です。
> 自動実行の前に、バックグランドでプロセスが期待通りに動作するかどうかを、
> プロンプトに『hakaru@armadillo:~/test$ sudo ./a.out &』を入力して確認したのですが、
> プロセスの起動は掛かりませんでした。
上記について、[sudo]を用いたバックグラウンド実行は[&]を使用するのではなく「sudo -b ./a.out」で実行する必要があります。
「sudo -b [コマンド]」で実行した場合、次にユーザのパスワードを要求されるはずなのでプロンプトからの確認ができるかと思います。
「sudo」については[man sudo]コマンドで確認できるmanページを参考にしてください。
以上です。
at_takumi.ando
2018年4月10日 14時31分
安藤です。
harukaというユーザの権限で、任意のバイナリを実行させたい理由は何でしょうか?
例えば簡単な方法で、rc.local で a.out を呼び出す方法があります。
rootで自動実行したくない理由があるのでしょうか?