kukai88

垢 - やったことを残す -

FTP サーバー(ProFTPD)を構築する

環境


FTPS と SFTP の違いは?

今回使用する「ProFTPD」は FTPS を使用します。FTPS と良く似たプロトコルに SFTP があります。それらの違いを確認しておきます。

  • FTPS(File Transfer Protocol over SSL/TSL)
    • FTP で送受信するデータを SSL/TSL で暗号化する方式
  • SFTP(SSH File Transfer Protocol)
    • SSH を介してデータを送受信する方式
    • SSH を利用するため、別途 FTP サーバーを構築する必要がない


1. ProFTPD をインストールする

ProFTPD パッケージは Ubuntu 標準の universe レポジトリで提供されている為、もし universe レポジトリが追加されていない場合は追加します。その後、ProFTPD をインストールします。

$ sudo add-apt-repository universe
$ sudo apt -y install proftpd-basic


インストール完了後に ProFTPD の状態を確認しておきます。"active (running)" になっていれば OK です。

$ sudo systemctl status proftpd


2. ProFTPD の設定ファイルを調整する

/etc/proftpd ディレクトリ直下にある tls.conf ファイルに以下の設定を追記します。念のため、変更を加える前にバックアップを取っておきます。

$ sudo cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf.bak
<IfModule mod_tls.c>
   TLSEngine                  on
   TLSLog                     /var/log/proftpd/tls.log
   TLSProtocol                SSLv23
   TLSRSACertificateFile      /etc/ssl/certs/proftpd.cts
   TLSRSACertificateKeyFile   /etc/ssl/private/proftpd.key
   FactsAdvertise             off
</IfModule>


3. SSL/TLS 用の証明書と秘密鍵を作成する

FTPS は SSL/TLS を利用して通信するため、証明書と秘密鍵を作成する必要があります。作成場所は 2. で追加した設定に合わせます。

   TLSRSACertificateFile      /etc/ssl/certs/proftpd.cts
   TLSRSACertificateKeyFile   /etc/ssl/private/proftpd.key


下のコマンドで証明書と秘密鍵を作成します。

$ sudo openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365


作成した秘密鍵のアクセス権を変更します。所有者のみ読み書き可能な設定(600)にしておきます。

$ sudo chmod 600 /etc/ssl/private/proftpd.key


4. ProFTPD の設定ファイルを有効にする

/etc/proftpd ディレクトリ直下にある proftpd.conf ファイルを調整して、2. で調整した tls.conf ファイルを有効にします。変更を加える前にバックアップを取っておきます。

sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.bak


proftpd.conf ファイルを以下のように変更します。

# Include /etc/proftpd/tls.conf
↓
Include /etc/proftpd/tls.conf
# PassivePorts        49152  65534
↓
PassivePorts        49152  65534


変更完了後に、変更内容を反映させるためにサービスを再起動しておきます。

$ sudo systemctl restart proftpd


5. ファイアウォールの設定をする

クライアントアプリから FTP サーバーへは 21 番ポートを使用するみたいなので、21 番ポートを開いておきます。

$ sudo ufw allow 21


6. クライアントアプリから FTP サーバーに接続する

cyberduck を起動して、[新規接続] を選択し、接続方法に「FTP-SSL」を指定します。あとは、「サーバ名」、「ユーザ名」、「パスワード」を入力して接続します。
そうすると、「証明書を信用しますか?」という旨のメッセージが表示されるので OK を選択することで FTP サーバーにアクセスできます。

一般ユーザーが sudo コマンドを使用できる設定に変更する

環境


※ 既に一般ユーザーを作成しているものとします。

root ユーザーでログインする

/etc/sudoer ファイルに sudo コマンドを許可するユーザーを追記します。以下のコマンドでファイルの編集画面に切り替わります。

$ visudo
# User privilage specification
root    ALL=(ALL)    ALL
kali    ALL=(ALL)    ALL    ★追加


変更後は変更内容を更新するために reboot しておきます。

$ reboot

一般ユーザーに切り替えて sudo コマンドを試用する

$ sudo su -


そうすると、下のように root 権限に切り替えることができました。

#

Go 言語の開発/実行環境を整える(macOS 版)

環境

1. macOS 用のパッケージマネージャー homebrew をインストールする

homebrew の公式サイトを確認すると、下のコマンドを実行してインストールする、って記載があります。macOS のターミナルを起動して実行します。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

引用元:The missing package manager for macOS (or Linux) — Homebrew

2. Go をインストールする

$ brew install go

3. Visual Studio Code に Go 関連のツールをインストールする

Visual Studio Code を起動して、Shift + Command + X を押して、拡張パッケージをインストールする画面に移動します。下の拡張パッケージをインストールしておきます。


次に、Shift + Command + P を押して、コマンド入力欄を表示して、「Go: Install/Update Tools」と入力します。そうすると、Go 関連のツールが表示されるので、全てにチェックを付けて「OK」をクリックします。

Installing 17 tools at /Users/ユーザー名/go/bin
   gocode
   gopkgs
   go-outline
   go-symbols
   ...

Installing github.com/mdempsky/gocode   SUCCESSED
Installing github.com/uudashr/gopkgs/cmd/gopkgs   SUCCESSED
...

試しにコードを書いてみる

下のコードを書いて、デバッグ実行してみます。すると、デバッグコンソールに "Hello World!" と出力されました。

package main

import "fmt"

func main() {
   fmt.Println("Hello World!")
}
API server linstening at: 127.0.0.1:5926
Hello World!

DB サーバー(MySQL)の構築 ー DB/テーブルの権限設定 ー

環境


既に以下の内容が完了しているものとします。

  • MySQL のインストール

ユーザーを作成する

root 権限で MySQL 管理プロンプトにアクセスします。

$ sudo mysql

下のコマンドでユーザーを新規に作成します。「Query OK」と表示されれば OK です。

mysql> create user {ユーザー名} identified by "{パスワード}";

ユーザーに権限を設定する

デフォルトでは何の権限も与えられていないので権限を与えていきます。DB やテーブルに細かく設定できます。「Query OK」と表示されれば OK です。

mysql> grant {権限 (create, select update, delete, drop, alter, insert, all) } on {DB 名}.{テーブル名} to {ユーザー名};

作成したユーザーで MySQL にアクセスする

下のコマンドを実行します。パスワードを聞かれるので、ユーザーを作成する際に決めたパスワードを入力します。

$ mysql -u {ユーザー名} -p

(補足:"-p" オプションを付けるとパスワードを聞かれるようになります。付けないと聞かれないので管理プロンプトにアクセスできません。)

DB サーバー(MySQL)の構築 ー CRUD 処理 ー

環境


既に以下の内容が完了しているものとします。

  • MySQL のインストール
  • 適当な DB とテーブルの作成

データの挿入("C" reate)

mysql> insert into {テーブル名} ({カラム名1}, {カラム名2}, {カラム名3}) values ({値1}, {値2}, {値3});

データの表示("R" ead)

【全件】全てのデータを表示する

mysql> select * from {テーブル名};

【カラム指定】指定したカラムのデータのみを表示する

mysql> select {カラム名1}, {カラム名2} from {テーブル名};

【条件指定】条件に一致するデータのみを表示する

mysql> select * from {テーブル名} where {カラム名1} = {値1};

【並び替え】データを降順(descending order)に表示する

mysql> select * from {テーブル名} order by {カラム名1} desc;

(補足:デフォルトは昇順(ascending order)となります。"order by {カラム名1} asc" とすることも可能です。 )

データの更新("U" pdate)

mysql> update {テーブル名} set {カラム名1} = {値1} where {カラム名2} = {値2};

データの削除("D" elete)

mysql> delete from {テーブル名} where {カラム名1} = {値1};

注:"where {カラム1} = {値1}" を書き忘れるとテーブル内の全てのデータが削除されます。

DB サーバー(MySQL)の構築 ー DB とテーブルの作成 ー

環境


既に以下の設定が完了しているものとします。

  • MySQL のインストール

DB を作成する

MySQL 管理プロンプトにアクセスします。

$ sudo mysql

MySQL 管理プロンプトで下のコマンドを実行すると DB を作成することができます。「Query OK」と表示されれば OK です。

mysql> create database {作成する DB 名};

(補足:mysqladmin コマンドで "$ sudo mysqladmin create {DB 名}" としても作成できます。)

DB 内にテーブルを作成する

テーブルを作成する DB を指定します。「Database changed」と表示されれば OK です。

mysql> use {作成した DB 名};

(補足:MySQL 管理プロンプトにアクセスする際に "$ sudo mysql {DB 名}" とする方法もあります。)


下のコマンドで DB 内にテーブルを作成します。カラム名、カラムの型も同時に設定します。「Query OK」と表示されれば OK です。

mysql> create table {テーブル名} (number serial primary key, name char(255), kana char(255), age int);


下のコマンドで作成したテーブルの詳細を確認しておきます。表形式でカラム名、カラムの型などを確認できます。

mysql> describe {テーブル名};

【補足】DB を削除する

下のコマンドで DB を削除することができます。「Query OK」と表示されれば OK です。

mysql> drop database {DB 名};

【補足】テーブルを削除する

下のコマンドでテーブルを削除することができます。「Query OK」と表示されれば OK です。

mysql> drop テーブル {テーブル名};

DB サーバー(MySQL)の構築 ー 導入・起動 ー

環境

1. MySQL をインストールする

MySQL には、サーバーの「mysql-server」とクライアントの「mysql-client」がそれぞれあります。両方をインストールします。

$ sudo apt -y install mysql-server mysql-client

2. MySQL の状態を確認する

インストール後、MySQL の状態を確認しておきます。

$ sudo systemctl status mysql

状態が "acitive (running)" になっていれば MySQL は起動しているので、これで OK です。

3. MySQL にアクセスしてみる

下のコマンドを実行すると、MySQL の管理プロンプトにアクセスできます。

$ sudo mysql

下のように切り替われば MySQL の管理プロンプトにアクセスできています。DB 表示/作成/更新/削除などの処理を行うことができます。

...
mysql>