Raspberry pi 3+でFTPサーバーを

今回は色々あるFTPサーバーの中でもメジャーなVsftpdを入れてみた時の覚え書きです。

1.vsftpdのインストール

$ sudo apt-get install vsftpd

2.設定ファイルを開き設定

以下のように変更。(設定は色々あるでしょうから1例です)

$ sudo vi /etc/vsftpd.conf

listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

ascii_upload_enable=YES

ascii_download_enable=YES

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

user_config_dir=/etc/vsftpd/user_conf

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd.user_list

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO

seccomp_sandbox=NO

allow_writeable_chroot=YES

保存したらサーバーを起動

$ sudo service vsftpd start

または再起動

$ sudo service vsftpd restart

止めるのは

$ sudo service vsftpd stop

3.FTP専用のローカルユーザーを追加

FTPでアクセスするためのローカルアカウントを作成します。
新たなユーザーは、Raspbianにはルートログインは出来ないけれど、FTPにはログイン可能な専用ユーザーでなければならないので、まずは作ります。
ユーザー名:yamada
仮のhomeフォルダ:/home/yamada
とすると。

$ sudo adduser –shell /usr/sbin/nologin –home /home/yamada yamada

Adding user `yamada’ …
Adding new group `yamada’ (1003) …
Adding new user `yamada’ (1003) with group `yamada’ …
Creating home directory `/home/yamada’ …
Copying files from `/etc/skel’ …
Enter new UNIX password: (パスワード入力)
Retype new UNIX password:passwd:(パスワード再入力)
password updated successfully
Changing the user information for yamada
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]

続いて/usr/sbin/nologinのFTPログインを許可するように設定します。

$ sudo vi /etc/shells

開いたら最後の行に以下を追加

/usr/sbin/nologin

FTPにユーザーを追加を設定

最初に作ったFTPの設定ファイルvsftpd.confに書いてあるように、ユーザーリスト /etc/vsftpd.user_list にユーザーを書くとFTPログイン出来るようになる。

$ sudo vi /etc/vsftpd.user_list

開いたら次の一行(ユーザー名)を書く。

yamada

保存する。
同様にアカウントyamadaのホームディレクトリの場所を書いたユーザー毎の設定ファイルを以下のディレクトリ
/etc/vsftpd/user_conf に作ります。

$ sudo vi /etc/vsftpd/user_conf/yamada

local_root=/var/www/yamada

保存する。
しかしこの /var/www/yamada フォルダはまだ存在しないしアクセス権が設定されてないので設定します。

$ cd /var/www/
$ sudo mkdir yamada
$ sudo chown yamada:yamada yamada

FTPを再起動。

$ sudo service vsftpd restart

これでFTPが使えます。
FTPの場合外部からのアクセス目的でしょうからポートを空けて置くことを忘れずに!!

sambaによる共有フォルダへのアクセスは、また別の機会で...


小野小町の墓に行ってきました

行く道すがら柿がたわわに!!
ちょうど時期で農家の方が収穫に勤しんでいました。
あまりにも大きいので感心していると、持ち主のおじさんが出荷出来ない傷物があるので『味見して』と、恵んで下さいました。
食べてみると、大きいだけでなくとても甘い!!
きっと今年は良い出来なのでしょう。
聞くところによると、この柿の木、50歳くらいなんだそうです。
驚きです。
良い日曜日でした。


raspbberry pi 3 model B+ にインストールしたRaspbianに各種サーバーを入れてみた

Raspberry Pi3+とUSB SSD

Raspberry pi 3 model B+ に入れたRaspbianに各種サーバーを入れる。その1

今回はRaspbuanを入れたraspberry pi 3+ を使ってWebサーバー等の各種サーバーを作って行く手順の記録です。
それには、このシリーズである初期設定編で書いてあるWindowsからターミナルソフトを使ってSSHで接続した環境でインストール作業をします。

1.ターミナルソフトを起動しSSHでログイン

       初期設定編を参照

2.必要に応じてパッケージのアップデートをする

$ sudo apt-get update

$ sudo apt-get upgrade

3.apache2を入れる

$ sudo apt-get install apache2

これでインストールします。

  バージョン情報の表示は
  $ apache2 -v
  起動は
  $ sudo service apache2 start
  停止は
  sudo service apache2 stop
  再起動は
  $ sudo service apache2 restart

  設定ファイルは
  /etc/apache2
  ディレクトリにありますので必要なファイルを書き換えて設定します。
  特に必要な書き換えは
  sudo vi /etc/apache2/conf-available/security.conf
  を開いて
     #ServerSignature Off
     ServerSignature On

  という記述を探し
  上の列の#を消し下の列に#を付けて保存します。
  offでWEB サーバーのエラー情報が画面に表示しないようになります。
  次にApache のデフォルトページを削除します。
  方法はデフォルトページのあるホルダのファイルを消すか
  デフォルトのフォルダを変更する。
  ホームページのあるフォルダは以下に記載されているので開きます。
  sudo vi /etc/apache2/sites-available/000-default.conf
  以下が書いてある行を探して確認
  DocumentRoot /var/www/html
  ここ/var/www/htmlがデフォルトのページの場所です。
  そのフォルダにあるファイルを後で削除しておきましょう。
  またはDocumentRootの場所を変えておいてもよいでしょう。
  次にこの場所のディレクティブ書いておきましょう。
  DocumentRootの後の行に

<Directory /var/www/html/>
  Options FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

  と追加記入しておくと良い。ディレクティブの内容は適宜変更する。

4.PHP7.0を入れる  

$ sudo apt-get install php7.0 php7.0-cli php7.0-gd php7.0-mysqlnd php7.0-pgsql php7.0-mcrypt php7.0-dev

バージョン確認は

$ php -v

5.MySQLを入れる

最新のraspbian(Stretch)でMySQLをインストールするとMySQLではなく
mariadbが勝手にインストールされる。
それなので気にせずインストールをすすめることにする。

$ sudo apt-get install mysql-server

気にする人は上記の代わりに下記を実行して入れる。どちらも結果は変わらない。

$ sudo apt-get install mariadb-server

実行するとパスワード設定画面が表示されずにインストールが終了する。
試しにrootでMSQLを呼び出してみる。

$ sudo mysql -u root -p

当たり前だが
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
とエラーが出るのを確認。
rootパスワードを設定する必要があるのでまずは

多分もうスタートされているはずだが、Mariadbを起動する。

$ sudo systemctl start mariadb.service

ちなみに再起動は

$ sudo systemctl restart mariadb.service

ちなみにMySQLとしての起動、再起動でも同じ。
$ sudo systemctl start mysql
$ sudo systemctl restart mysql

MySQLのrootパスワードの設定を開始する。

$ sudo /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

初期rootパスワードを入力(設定していないので空白のままEnter)

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDBroot user without the proper authorisation.

rootのパスワードをセットするかどうか聞いてくるので Y入れる。

Set root password? [Y/n] Y

続いてrootのパスワードを新規で入れる。

New password:○○○○○○

同様にもう1回。

Re-enter new password: ○○○○○○

Password updated successfully!
Reloading privilege tables.. … Success!

By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y

匿名ユーザを削除するかときいてくるので Y

Normally, root should only be allowed to connect from ‘localhost’. Thisensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y

rootによるリモートログインを許可しない設定にするので Y

… Success!

By default, MariaDB comes with a database named ‘test’ that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.

Remove test database and access to it? [Y/n] Y

テストデータベースと接続情報を削除するかを聞いてくるので Y

– Dropping test database…

… Success!

– Removing privileges on test database…

… Success!


Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.

Reload privilege tables now? [Y/n] Y

上記設定を反映させるために特権テーブルをリロードするか Y

… Success!

Cleaning up…


All done! If you’ve completed all of the above steps, your MariaDBinstallation should now be secure.

Thanks for using MariaDB!

MariaDBで再度ログインする。

$ sudo mariadb

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2551
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MySQLのデーターベースに接続する。

MariaDB [(none)]> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [mysql]> select user,password,plugin from user;

+——+——————————————————————————-+————-+
| user | password                                                                         | plugin |
+——+——————————————————————————-+————-+
| root | *000000000000000xxxxxxxxxxxxxxxxxxxxxxxxx | unix_socket |
+——+——————————————————————————-+————-+
1 row in set (0.01 sec)

rootユーザに対するunix_socketプラグインが設置されている。
これを無効化することによってMySQLからrootでログイン出来る様になる。

MariaDB [mysql]> update user set plugin=” where user=’root’;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

もう一度確認してみる

MariaDB [mysql]> select user,password,plugin from user;


+——+——————————————————————————-+————-+
| user | password                                                                         | plugin |
+——+——————————————————————————-+————-+
| root | *000000000000000xxxxxxxxxxxxxxxxxxxxxxxxx |               |
+——+——————————————————————————-+————-+
1 row in set (0.01 sec)

pluginの欄が空になればOKなので
更新内容を新しく反映させる。

MariaDB [mysql]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

quit またはexitでMariadbから抜ける。

MySQLとしてrootでログイン。

$ mysql -u root -p

設定したパスワードでログインできればOK

MySQLの文字コード設定について

色々なサイトがutf8に設定を変えているようだが
MySQL の utf8 は4バイト文字をうまく扱うことができないらしい。
インストール直後はdefaultで utf8mb4なのでそのまま使いましょう。
ですから、これについては何もせず終了。

Raspberry pi defaultのpiユーザーから別のユーザー名に変更する方法

defaultのpiユーザーを別の名前に変更する

最初から作成されていたユーザーpiをそのままでは外部から推測されて危険なのでユーザをpiから変更する。特に先人が詳しく書いて戴いているサイトがありましたのでそれをそのまま実行させていただきました。ありがとうございます。詳しくはそちらをごらん下さい。
今回は覚え書きとして手順を掲載する目的なので、ほぼ同じとなりますがご許しを。

初期設定時のユーザIDとパスワードでログイン

User: piPass:
raspberry

tmpユーザーを作成

$ sudo useradd -M tmp
$ sudo gpasswd -a tmp sudo
Adding user tmp to group sudo
$ sudo passwd tmp
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

自動ログインユーザーをpiからtmpユーザーに変更

$ sudo vi /etc/lightdm/lightdm.conf

開いたlightdm.conf内容での変更箇所 #を先頭につけコメントアウト

autologin-user=pi

# autologin-user=pi

保存。さらに次のファイルを開く。

$ sudo vi /etc/systemd/system/autologin@.service

開いたautologin@.service内容での変更箇所

$ sudo vi /etc/systemd/system/autologin@.service

ExecStart=-/sbin/agetty –autologin pi –noclear %I $TERM

↓piをtmpに変更

ExecStart=-/sbin/agetty –autologin tmp –noclear %I $TERM

保存し再起動すればtmpユーザーでログイン出来る。

$ sudo reboot

tmpユーザでログインしてpiユーザ名を変更

piユーザ名をnewnameに変更する

$ sudo usermod -l newname pi

いろいろ言ってくるが最後に tmpユーザーのパスワードを入力して変更完了。

usermod と groupmod を変更する

$ sudo usermod -d /home/newname -m newname
$ sudo groupmod -n newname pi

再起動

$ sudo reboot

piから名前を変えた新しいユーザーnewnameでログインして パスワードを変更

$ sudo passwd newname

いろいろ言ってくるがnewnameユーザーのパスワードを入力。変更完了。

自動ログインユーザーをtmpから新ユーザーnewnameに変更

$ sudo vi /etc/lightdm/lightdm.conf

最初と同じようにlightdm.confの#を先頭につけコメントアウトを戻し新規ユーザーnewnameに変え保存。

#autologin-user=pi

autologin-user=newname

$ sudo vi /etc/systemd/system/autologin@.service

ExecStart=-/sbin/agetty –autologin tmp –noclear %I $TERM

ExecStart=-/sbin/agetty –autologin newname –noclear %I $TERM

再起動

$ sudo reboot

tmpユーザーを削除

$ sudo userdel tmp
[sudo] password for newname:
$

これでdefaultのpiユーザーから新しいユーザー名に変更終了。 次はいよいよ各種サーバーのインストールです。

先は長い...

raspbberry pi 3 model B+ Raspbian初期設定編

Raspberry Pi 3+とUSB SSD

raspbberry pi 3 model B+ にインストールしたRaspbian の初期設定編です。

さて前回はOSのインストールで終わりましたので、今回はLinuxOSのRaspbianを設定して行きます。

1.地域を設定しSSHとVNCを使える様にする

  • GUI画面の一番左上のラズベリーのマークをクリックし 「設定」→「Raspberry Piの設定」を選択します。 インターフェースのタブを選んでSSHとVNCを有効にしておきます。
  • 同様にローカライゼーションのタブから 「ロケール設定」を選択
    • 言語を  ja
    • 国    JP
    • 文字セット UTF-8 にする。
  • 同様にタイムゾーンのタブから 「ロケール設定」を選択
    • 地域  Asia
    • 位置  Tokyo にする。
  • 念のため再起動します。

これでSSHとVNCが使える様になったので違うパソコンからアクセス出来ます。 なお、これらはTerminalを起動してCUIで「sudo raspi-config」を実行することでも設定可能です。 アクセスのためにRaspberry Piのアドレスを確認しましょう。 OS画面右上にネットワークのアイコンがあります。 アイコンの上にマウス矢印をかざすと

eth0 Configured 192.168.0.5/24

wlan0 Configured 192.168.0.10/24

のように表示されます。 有線LAN接続ならeth0の192.から始まるアドレスがRaspberry Piのアドレスです 無線LAN接続ならwlan0の192.から始まるアドレスがRaspberry Piのアドレスとなりますのでメモっておきます。 次で出てきますがTerminal起動した後調べる場合は

ifconfig

と打ち込んで調べて下さい。

2.ターミナルソフトを操作するWindowsパソコンにインストールしておく

Tera Termなどのターミナルソフトを、操作する(Windowsパソコン等)にインストールしておく。 ここから先のほとんどで、このターミナルソフトからRaspberry PiのアドレスにSSHでログインして設定をして行きます。

3.SSHでログイン

WindowsパソコンからTera Termを起動します。 ホストに先ほどのメモっておいたアドレスを入力。 192.168.0.5(のように入れる /24`はいらない) TCPポート:22 SSHで「OK] ログイン画面で ユーザー名 :pi (デフォルト) パスフレーズ:インストール時に決めたパスワードまたは 決めていない場合はraspberryと入力して「OK] これでログイン出来ます。

今後の設定、ソフトのインストールはこの状態でターミナルより実施していくと大変楽に出来ます。

4.apt-getを用いてパッケージの更新&アップグレード

#パッケージリストの更新
sudo apt-get update
#アップグレード
sudo apt-get upgrade

5.VNCでログイン

SSHはCUIベースでのログインでしたが、遠隔操作の形でGUI操作するのも便利です。
VNCServerは最初からインストールされているので、クライアント側、つまりWindows PC側にVNC Viewerをインストールしておきましょう。
REALVNCのホームページよりダウンロードします。
インストールと使い方は他のサイトを参照して下さい。
これで、他のパソコンからGUIベースで遠隔操作できるようになります。 こうなると、普段はRaspberry Pi本体にディスプレイとマウス、キーボードを取り付ける必要が無くなってしまいます。我が家でも写真のようにお守り程度についています...

6.Raspbianのネットワーク設定

以後はWindowsパソコンからTerminalを起動しての設定です。
Terminal内で起動するLinuxエディターは「vi」「vim」「nano」等の自分で使いやすいものを利用して下さい。 ここから先は判りやすいように「vi」に統一して記述していきます。

Raspbianのネットワーク設定です。
外部からRaspbianを操作したりネットワークに解放する場合はIPアドレスを固定する必要があります。
(DHCPサーバーを利用してアドレスを設定場合は設定不要です。)

ターミナルよりroot権限で

sudo vi /etc/dhcpcd.conf

開いた /etc/dhcpcd.conf に以下の内容を追記する。 ※ #行はコメントアウトですので記述不要

interface eth0
#static ip_address=(RaspberryPiに割り当てるIPアドレス)/(サブネットマスク)
static ip_address=192.168.0.xxx/24
#static routers=(デフォルトゲートウェイ)ルータのIPアドレス
static routers=192.168.0.1
#static domain_name_servers=(DNSサーバのIPアドレス)ルータのIPアドレス
static domain_name_servers=192.168.0.xxx

保存したら再起動

sudo reboot

7.rootでのパスワードを設定する。

後でサーバーを構築するにはrootユーザーにパスワードを設定しておく必要があります。 ターミナルより

sudo passwd root

パスワードを設定しますこれで大まかな設定は終了です。
しかし最初から作成されていたユーザーpiをそのまま使っているのでは外部から推測されやすく危険と思われます。piユーザを別のユーザー名に変更することが賢明でしょう。それは次回投稿とします。

次回投稿予定
defaultのpiユーザーを別の名前に変更する編



raspbberry pi 3 model B+ にLinuxをインストールし各種サーバーを作ってみた 入手~OS導入編

Raspberry Pi 3+とUSB SSD

巷で人気のraspbberry pi を使ってLinux OSディストリビューション「Raspbian」をインストールし、その後Webサーバー、FTPサーバ等、各種サーバーをインストールしました。せっかくなので手順を覚え書きとして記録して行きます。

まずはraspbberry pi 3 model B+を入手。

手っ取り早いところで、アマゾンでは「コンプリートスターターセット」と題し
本体+SDカードメモリ+microSDカードリーダー+電源+HDMIケーブル+ケース付で1万円を切った値段で販売しているので個別に入手が面倒な場合はこれで十分のようです。私もものぐさなのでこれで購入しました。
ただし、この今回のセットについているケースは今ひとつでした。
私はサーバーにする目的だったので、後でファン付のものに買い換えをしました。
この「コンプリートスターターセット」は、SDカードに最初からOS(noobs)がインストールされていて、それから起動して行くとDebian系Linuxが手間無く、あっという間にインストール出来ます。
私の場合も、まずはそのまま入っているOSから起動してインストールしました。
そして色々とお試しで動かしておおよその状態が判ってから、新規でSDカードをフォーマットしてホームページから最新のものを入れ直しをしました。
今回は、まっさらSDカードから作っていく方法を書いて行きます。
ただ、SDカード起動のサーバーを作成するとなると、メモリの寿命の短さから実用的で無いので最終的にはUSB起動で外付けハードディスクまたはSSDで起動させる様に仕様変更して行きます。

OSのセットアップまでの手順

1.Raspbianの入手

ここでは、ラズベリーパイ推奨のLinuxディストリビューション「Raspbian」を入れていきます。OSはここから入手しましょう。
https://www.raspberrypi.org/downloads/noobs/

noobsはLiteではなく、フルzip版をダウンロードしてください。
後でUSBのHDDに入れ替えるので最初はFullでインストールして遊びましょう。

ダウンロードしたZipファイルから「xxxx-xx-xx-raspbian-jessie.img」ファイルをを展開しておきます。

2.microSDカードのフォーマット

microSDカードをフォーマットしましょう。
現在のWindows10のフォーマットであるNTFSではなく旧Windowsで使われていたFAT32/64でフォーマットします。
SD規格が定めるフォーマットをするためにも、以下のリンクからSD Card Formatterをダウンロードすると簡単にフォーマット出来ます。
https://www.sdcard.org/jp/downloads/formatter_4/

このソフトは下記の容量に従って、標準サイズのSDメモリカードとmicroSDメモリカードをフォーマットできます。

ダウンロードしたらインストールしておきましょう。

それではフォーマットです。
Windows PCにmicroSDカードをさします。
SD Card Formatterを起動します。
microSDカードがささってるフォーマットするドライブを選択します。
フォーマットをクリックします。
フォーマットオプション消去設定はクイックフォーマット、論理サイズ調整はONに設定。
OKをクリック。これでmicroSDカードがフォーマット終了です。

3.Disk Imageの書き込み

microSDカードに最初に入手したRaspbian Liteのイメージを書き込むためのソフトWin32 Disk Imagerを以下のリンクからダウンロードします。
https://ja.osdn.net/projects/sfnet_win32diskimager/

それでは書き込み開始します。
microSDカードをPCにセットしておきWin32 Disk Imagerを起動します。
Image File: 先ほど解凍したRaspbian Liteのimgファイルを選択します。
Device:  先ほどフォーマットしたmicroSDカードのドライブを選択します。
Writeをクリック、書き込みが完了。

4.raspbberry pi の起動

それではmicroSDカードにOS imageが書きこまれているので、それをラズベリーパイにセットし、HDMIのモニター、USBキーボード・マウスをついないでさらにLAN、を接続します。
最後に電源ケーブルを差し込んで起動で「Raspbian」のインストールが始まります。
今回はFullインストールなのでRECOMMENDEDと表示されているRaspbianにチェックを入れます。
警告が表示されるので「Yes」をクリック。
インストール途中でアカウントの作成が指示されます。

ラズパイはデフォルトアカウントは最初から登録されています。
アカウント:pi

CUI版のRaspbian Stretch Liteの場合はパスワードが最初から入っていて
パスワード:raspberry
今回のGUI版のRaspbian Stretch with desktopをインストールした場合は自分で自由なパスワードを入力します。
もちろん入力たパスワードは忘れないようにしておいてください。

以後のログインはraspberrypi login:にpiと入力し、Password:に今回作ったパスワード○○○○○○と入力しログインします。

以上がOS導入編です。

後日、Raspbian初期設定編アップです。

投稿一覧