トップページ | 組込みソフト | sudo をパスワードなして使う |
sudo をパスワードなして使う |
Beagle Bone BlackのIOを制御するプログラムはrootの権限で動かさないとパーミッションエラーとなってしまいます。testという実行ファイルを動かすのであれば、Bealge
Bone Blackのコマンドラインで、 sudo ./test としないと正しくIOを制御することができません。 Eclipseでリモートデバッグをするには、 [Run]-[Debug Configurations...] で次のように, sudo su をいれればいいのですが、パスワードを入力した後そこで止まってしまいデバッグに進めません。ここでchmodやgdbseverの起動を手入力すれば進めます。しかし、毎回これでは面倒です。 そこで考えられること、 1.シェルスクリプトで対応できないか? 2.sudoをパスワードなして使えないか? をやってみました。 |
1.シェルスクリプトで対応できないか? |
次のようなシェルスクリプトでパスワードを自動入力できます。 #!/usr/bin/expect set timeout 5 spawn sudo su expect "ubuntu:" send -- "ubuntu\n" interact これでパスワードの自動入力ができました。万歳! しかし、これをEclipseに組み込んでみるとパスワードの自動入力をしたところで止まってしまいます。改善できたのは手入力でパスワードを入力したのが自動的に入力できるようになっただけ。 根本的な解決になりませんでした。 |
2.sudoをパスワードなして使えないか? |
sudoをパスワードなして実行できれば、うまくいきそうです。いろいろ調べれみると、 /etc/sudoers を書き換えればできそうです。 早速やってみます。 ubuntu@ubuntu-armhf:~$ sudo vi /etc/sudoers 最後の赤字部分を追加しいます。 # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: ubuntu ALL=(ALL) ALL ubuntu ALL=(ALL) NOPASSWD:ALL #includedir /etc/sudoers.d これでめでたくsudoがパスワードなして使えるようになりました。 Eclipseでもリモートデバッグができるようになしました。 問題解決です。 重要なこと: この設定を間違えるとsudoができなくなってしまいます。 つまり間違いに気づいても時すでに遅し!sudoが使えません。 sudo vi ができなくなってしまっています。 もちろん、 sudo su でroot権限になることもできません。 実は、母艦でこのテストをやっていて、間違いをやってしまいました。 解決方法は、 Linuxの再インストール これはまた時間がかかってやりたくない。また、同じようなことが起きたとき、rootでログインできるようなことができれば、パスワードを忘れてしまったときなど大変役立ちます。Ubuntuでは起動後にrootのIDを直接使うことはできません。それならUbuntuが起動するときに何とかできないか? できます! Ubuntuの起動時にrootでログインする を参照してください。 |