トップページ 組込みソフト 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でログインする
を参照してください。