SCPでM5Stack UnitV2 にファイルを持っていったり持ってきたりする
以前書いたM5Stack UnitV2の記事の続きです。
なお、sudo
コマンドを使用するため、この記事の方法でsudoを使えるようにしておく必要があります。
PCとUnitV2をUSB LANで接続して下記のどちらかのコマンドを叩きます。
# 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
のパーミッションを確認します。
# @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したい場合は下記のコマンドを叩きます。
# @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になる場合に使える方法で、接続先でエラーになる場合の方法ではなかったようです。