SCPでM5Stack UnitV2 にファイルを持っていったり持ってきたりする

以前書いたM5Stack UnitV2の記事の続きです。

なお、sudoコマンドを使用するため、この記事の方法でsudoを使えるようにしておく必要があります。

PCとUnitV2をUSB LANで接続して下記のどちらかのコマンドを叩きます。

1
2
3
4
5
6
# Unitv2 => PC にコピー
$ scp m5stack@10.254.239.1:/media/sdcard/sample.file ~/

# PC => UnitV2 にコピー
# コピー先は/media/sdcard/がオススメ
$ scp ~/sample.file m5stack@10.254.239.1:/media/sdcard/

するとCouldn't open /dev/null: Permission deniedというエラーが表示されコピーができません。

下記のようにSSHでUnitV2に入り/dev/nullのパーミッションを確認します。

1
2
3
4
5
6
7
# @PC
$ ssh m5stack@10.254.239.1

# @M5Stack UnitV2
$ ls -la /dev/null
# 下記のように表示される
crw-rw---- 1 root root 1, 3 Jan 1 00:00 /dev/null

rootユーザーかrootグループは読み書きが可能となっています。

m5stackユーザーはrootグループではないので/dev/nullの読み書きができないということです。

試しに$ idコマンドを叩くとm5stackユーザーはwheelグループに属しています。

wheelはグループはsudoが叩けたり、suでrootユーザーにログインできる権限を持ったグループのようです。

M5Stack UnitV2でsudoできるようにしたからwheelグループになっているかはわかりませんが、scpコマンドでsudoを叩くことができないので/dev/nullに対してroot権限でゴニョゴニョできないということです。

なのでscpしたい場合は下記のコマンドを叩きます。

1
2
3
4
5
# @PC
$ ssh m5stack@10.254.239.1

# @M5Stack UnitV2
$ sudo chmod 666 /dev/null

これで、PCからUnitV2へのコピー、UnitV2からPCへのコピーができるようになります。

なおUnitV2にコピーする場合はパーミッションが777になっている/media/sdcard/にまずはコピーしてからmvする方法がオススメです。

でもscpでPermission deniedになるファイルを無理やり転送するというような方法もあるようです。

この方法ならsudoが使えるのでうまく行きそうです。

今度試してみます。

上記のscpでPermission deniedになるファイルを無理やり転送するは接続元でPermission deniedになる場合に使える方法で、接続先でエラーになる場合の方法ではなかったようです。