投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2019年11月4日月曜日

【Raspbian Buster September 2019】VNC Server virtualモードで、新規に作成したユーザーのリモートデスクトップ環境を個々に構築する


下記ページでは、デフォルトのpiユーザーのデスクトップをVNC Server Virtual モードで作成し、ヘッドレスで運用ができるようにした。
https://akira-arets.blogspot.com/2019/10/raspberry-pi-4-vncserver-virtual.html

今回は、その追試として、
作成した任意のユーザーでも同様にVNC Server Virtual モードによるデスクトップの構成を行った。
したがって、ほぼ内容は同じである。

結論としては、piユーザーと、以下で作成する新規ユーザーのデスクトップ環境を、
並列して動作させることができた。
また、それぞれのユーザーのデスクトップ環境は、systemctlコマンドを用いて、
独立して制御(start restart stop)できるようにした。



■新しいユーザーを作成した。

まず、rootユーザーに切り替えた。
(sudo passwd root コマンドで予めパスワードを設定している必要がある。)

pi@raspberrypi:~ $ su
Password:
次に、新規ユーザーを作成した。
root@raspberrypi:/home/pi# adduser mynewuser
Adding user `mynewuser' ...
Adding new group `mynewuser' (1001) ...
Adding new user `mynewuser' (1001) with group `mynewuser' ...
Creating home directory `/home/mynewuser' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for mynewuser
Enter the new value, or press ENTER for the default
        Full Name []: ←特に設定する必要がなかったので、空欄のままエンターを押下した。(以下同様)
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y


■VNCでこのユーザー専用のデスクトップにアクセスできるようにする。

○VNC Serverのパッケージについて

Raspbian では、既にVNCサーバーのパッケージはインストール済みだった。
もしもなければ、apt-get install realvnc-vnc-server で導入できる。


○VNCセッションでのマウスカーソルの形状を矢印型になるように設定

(この設定がなければ、×印のカーソルになった。)
nano /etc/vnc/xstartup
(略)
xsetroot -solid grey -cursor_name left_ptr(略)

CTRL+s で上書き保存、CTRL+x で終了する。


○作成したあたらしいユーザーでSSHログインのしなおし

一旦、現在のSSH接続を切断して、
新しく、SSHで新規作成ユーザーでRaspberry pi にログインしなおした。

$ ssh mynewuser@192.168.1.2

(注意)
上記のように、作成した新規ユーザーで新しくSSH接続をしなおすことは重要である。
なぜならもし、su mynewuser などとしてしまえば、以下のプロセスで次のようなエラーとなり、vnc serverの起動に失敗したからだ。

The virtual session failed to start. Session log:
XvncSession start time: 2019-11-03T17:40:33.510Z
pulseaudio not installed
Error: mkDir(/run/user/1000/session-xxxxxxxxxxxxxxxx): Permission denied (13)
[System-13]

○このユーザーのためのVNCパスワードを設定した。(-virtualを指定した。)
mynewuser@raspberrypi:~ $ vncpasswd -virtual
Setting "Password" VNC parameter for Virtual Mode server
Password:
Verify:

○vnc serverを一度だけ起動する。

上記のようにして新しく作成したユーザーでSSHでログイン後、
次のようにコマンドを実行した。
:3 は、ディスプレイ番号である。他のVNCユーザーと重ならないようにすること。

mynewuser@raspberrypi:~ $ /usr/bin/vncserver -Encryption PreferOff -Authentication VncAuth -geometry 1600x900 :3
VNC(R) Server 6.5.0 (r41824) ARMv6 (Aug 16 2019 00:24:44)
Copyright (C) 2002-2019 RealVNC Ltd.
RealVNC and VNC are trademarks of RealVNC Ltd and are protected by trademark
registrations and/or pending trademark applications in the European Union,
United States of America and other jurisdictions.
Protected by UK patent 2481870; US patent 8760366; EU patent 2652951.
See https://www.realvnc.com for information on VNC.
For third party acknowledgements see:
https://www.realvnc.com/docs/6/foss.html
OS: Raspbian GNU/Linux 10, Linux 4.19.75, armv7l
On some distributions (in particular Red Hat), you may get a better experience
by running vncserver-virtual in conjunction with the system Xorg server, rather
than the old version built-in to Xvnc. More desktop environments and
applications will likely be compatible. For more information on this alternative
implementation, please see: https://www.realvnc.com/doclink/kb-546
Running applications in /etc/vnc/xstartup
VNC Server catchphrase: "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
             signature: yy-yy-yy-yy-yy-yy-yy-yy
Log file is /home/mynewuser/.vnc/raspberrypi:3.log
New desktop is raspberrypi:3 (192.168.1.2:3)
(注意)
本当は、おそらく、上記結果中に、
Generating private key... done という情報が表示されるのだろうと思うが、
先に述べているように、su mynewuser などとしてvnc serverの起動をし損ねたときに、
既にそれらの処理が完了したために、ここでは表示されなかったと思う。

○VNCクライアントソフトウェアで接続テスト

ここで、VNCクライアントから接続テストをおこなった。
VNCクライアントの接続先指定において、
上記の最後に記されているアドレスとディスプレイ番号を指定し接続した。
192.168.1.2:3
これで、mynewuser専用のデスクトップにVNCで接続することができた。


○起動したVNCのプロセスをいったん終了

ディスプレイ番号を間違えないように注意すること。

mynewuser@raspberrypi:~ $ /usr/bin/vncserver -kill :3


○システム起動時にVNC Serverが起動するように設定

このユーザー専用のデスクトップがシステム起動時に自動的に準備されるように設定した。

rootユーザーに切り替えた。
pi@raspberrypi:~ $ su
Password:
このユーザー専用のVNC Serverを制御するための設定ファイルを作成した。
root@raspberrypi:/home/mynewuser# nano /usr/lib/systemd/system/vncserver-mynewuser.service
[Unit]
Description=VNC Server for user mynewuser in Virtual Mode daemon
After=network.target

[Service]
User=mynewuser   
Type=forking
#ExecStart=/usr/bin/vncserver -geometry 1600x900 :3
ExecStart=/usr/bin/vncserver -Encryption PreferOff -Authentication VncAuth -geometry 1600x900 :3
ExecStop=/usr/bin/vncserver -kill :3
Restart=on-failure
RestartSec=5
KillMode=process

[Install]
WantedBy=multi-user.target

上記設定ファイルを用いて自動起動されるようにセットした。
root@raspberrypi:/home/mynewuser# systemctl enable vncserver-mynewuser.service
Created symlink /etc/systemd/system/multi-user.target.wants/vncserver-mynewuser.service → /usr/lib/systemd/system/vncserver-mynewuser.service.

手動で、このユーザーのVNC serverを起動した。
(もし、vncserver-mynewuser.service を変更したなら、systemctl daemon-reload を行っておくこと。)
root@raspberrypi:/home/mynewuser# systemctl daemon-reload
root@raspberrypi:/home/mynewuser# systemctl start vncserver-mynewuser.service


ここで、再び、VNCクライアントから接続テストをおこなった。

VNCクライアントの接続先指定において、
上記の最後に記されているアドレスとディスプレイ番号を指定し接続した。
192.168.1.2:3
これで、mynewuser専用のデスクトップにVNCで接続することができた。

下記のように、No session for pid ・・・というエラー表示ウインドウが開いたものの、
特に気になる問題が生じることなく利用することができた。
(最後に注意点を記載した。)



このユーザーのデスクトップ環境は、次のコマンドで、再起動や停止も可能である。
root@raspberrypi:/home/mynewuser# systemctl restart vncserver-mynewuser.service
root@raspberrypi:/home/mynewuser# systemctl stop vncserver-mynewuser.service

(注意)
アプリケーションに特権を与えるpolkitが、
systemd経由でのReal VNC Server(virtualモード)ではうまく動作しなかった。
直接コンソールから、vncserverコマンドを起動する方法では問題なかった。
これを回避するために、sudoersを使った特権を与える方法について次のページに記載した。
https://akira-arets.blogspot.com/2019/11/raspbian-buster2019sep-polkit.html


○rebootコマンドが効くように設定

rebootコマンドを発行したところ、次のエラーが発生した。
mynewuser@raspberrypi:~ $ reboot
User pi is logged in on sshd.
User pi is logged in on tty1.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

調べると、piユーザーがログインしていた。
これはおそらく自動ログインによるものだと思う。
自動ログインしないように試したが、うまくいかなかった。(多分、やり方がまずかったのだろう。)
mynewuser@raspberrypi:~ $ who
pi       tty1         2019-11-15 02:24


そこで、rebootコマンドをsudoで起動(パスワードなし)できるように設定した。
poweroffコマンドも同様に設定を行った。
下記、ページに記述してある。


次のようにコマンドを発行することで直ちに再起動できた。
$ sudo reboot

次のようにコマンドを発行することで直ちにシャットダウンできた。
$ sudo poweroff



<参考>

・【Raspbian Buster September 2019】VNC Serverを利用してユーザーごとのリモートデスクトップ環境を構築する
< https://akira-arets.blogspot.com/2019/10/raspberry-pi-4-vncserver-virtual.html > 2019年11月4日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad