aron
2024年9月13日 15時37分
青木@多治見と申します。
初投稿です。よろしくお願いいたします。
Armadillo X4でUSBメモリーを抜くのにumountを実行するためにRest API : カスタムスクリプトの実行をしようとしていますがrootで実行できません
マニュアルを参考にテストをしていますが、何か勘違いする点や注意事項あればご教示ください。
Rest API : カスタムスクリプトの実行
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
conf 1行目には念のためマニュアルと同じ行を置いています。
現在テスト中で、権限が不要ならテストで順次削除する前提で、全てにrootで実行するため全部に権限つけました。
usb_mountとusb_umountのみ権限で引っかかっています。
まずは、umountの調査をしています。
実行は、全てコンソールよりテストを行い実行権限の確認済みです。
<root権限実行用のabos_web_customize.conf>
armadillo:~# cat /etc/doas.d/abos_web_customize.conf
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/root_command.sh
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/usb_mount.sh
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/usb_umount.sh
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/ls.sh
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/lsblk.sh
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/ifconfig.sh
armadillo:~#
<テスト中のカスタムAPIで実行するシェルスクリプト>
armadillo:~# cat /etc/atmark/abos_web/customize_rest/usb_umount.sh
#!/bin/sh
current_user=$(whoami)
echo "現在のユーザー: $current_user"
# コマンドの実行結果を変数に格納
output=$(umount /var/app/volumes/firefox/usb/)
# 結果を出力
printf "$output"
armadillo:~#
<PCよりAPIを実行した結果 PCは>
st518@pop-os:~$ curl -k -H "Authorization: Bearer 4fca5272-3322-4859-b583-cd1dfb4c2735" https://armadillo.local:58080/api/custom/usb_umount.sh -X POST -H 'Content-type: application/json' -d '{"args": ["param", "second arg"]}' -w "\nhttp code: %{http_code}\n"
{"stdout":"現在のユーザー: abos-web-admin\n"}
{"stderr":"umount: can't unmount /var/app/volumes/firefox/usb/: Operation not permitted\n"}
{"exit_code":0}
http code: 200
st518@pop-os:~$
ユーザーは、abos-web-adminです。
umountコマンドからエラー吐かれています。
umount: can't unmount /var/app/volumes/firefox/usb/: Operation not permitted
aliasを使うと後々わからなくなりそうですので、展開してテストを行っています。
よろしくお願いいたします。
コメント
aron
> root権限で実行するためには
> '{"args": ["param", "second arg"]}'
> この部分を
> '{"args": ["param", "second arg"], "root":true}'
> としてもらえますでしょうか。
st518@pop-os:~$ curl -k -H "Authorization: Bearer 4fca5272-3322-4859-b583-cd1dfb4c2735" https://armadillo.local:58080/api/custom/usb_umount.sh -X POST -H 'Content-type: application/json' -d '{"args": ["param", "second arg"],"root":true}' -w "\nhttp code: %{http_code}\n"
{"stdout":"現在のユーザー: root\n"}
{"stderr":"umount: can't unmount /mnt/: Invalid argument\n"}
{"exit_code":0}
http code: 200
st518@pop-os:~$
rootユーザーでアクセスできました。
何度見直しても、環境チェックしても改善したかったので大変助かりました。
ありがとうございます。
at_makoto.sato
2024年9月13日 16時01分
佐藤です。
> st518@pop-os:~$ curl -k -H "Authorization: Bearer 4fca5272-3322-4859-b583-cd1dfb4c2735" https://armadillo.local:58080/api/custom/usb_umount.sh -X POST -H 'Content-type: application/json' -d '{"args": ["param", "second arg"]}' -w "\nhttp code: %{http_code}\n"
マニュアルの書き方が分かりにくくてすいません。
root権限で実行するためには
'{"args": ["param", "second arg"]}'
この部分を
'{"args": ["param", "second arg"], "root":true}'
としてもらえますでしょうか。