オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【Linux】CentOS8のFTPサーバー設定 ~WindowsからLinuxにFTP接続する~

記事の目的

LInuxのCentOS8FTPサーバー設定をすること
Windows PCからVM Ware Player上のCentOS8にFTP接続してファイルを送受信すること

CentOS8のFTPサーバー設定の手順

1.CentOS8にrootユーザでログインする

(画像では一般ユーザでログインしているので、suコマンドでrootユーザに切り替えています)
f:id:auroralights:20210828004349p:plain

2.Vsftpdのインストール・設定

以下コマンドでVsftpdをインストールします。

dnf -y install vsftpd


以下のような画面でインストールが完了します。
f:id:auroralights:20210828005607p:plain



以下のコマンドで/etc/vsftpd/vsftpd.conf(設定ファイル)の設定をします。

vi /etc/vsftpd/vsftpd.conf

<vsftpd.conf>
f:id:auroralights:20210828010213p:plain



:set numberと入力してEnterキーを押して、行番号を表示させます。
(編集する箇所を探しやすくするために行番号を表示させます)

:set number

f:id:auroralights:20210828010651p:plain



12行目の匿名でのログインを許可しない設定にします。

anonymous_enable= NO

f:id:auroralights:20210828010932p:plain



82、83行目の#を削除してコメントアウトを解除する(アスキーモードでの転送を許可する)

ascii_upload_enable=YES
ascii_download_enable=YES

f:id:auroralights:20210828011355p:plain



100、101、103行目の#を削除してコメントアウトを解除する(chroot有効化・chrootリストファイルの指定)
/etc/vsftpd/chroot_listに記述したユーザはchroot対象外になります。

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

f:id:auroralights:20210828012820p:plain



109行目の#を削除してコメントアウトを解除する(ディレクトリごと一括転送の許可)

ls_recurse_enable=YES

f:id:auroralights:20210828013229p:plain



114行目を任意で変更
YES:IPv4のみリスンする、NO:IPv4とIPv6の両方をリスンする

listen=NO

f:id:auroralights:20210828165320p:plain



123行目を任意で変更
YES:IPv4とIPv6をリスンする、NO:IPv6をリスンしない

listen_ipv6=YES

f:id:auroralights:20210828170014p:plain



ローカルタイム指定を最終行に追記

use_localtime=YES

f:id:auroralights:20210828170314p:plain



/etc/vsftpd/vsftpd.conf(設定ファイル)を保存して閉じる

3.上層へのディレクトリ移動を許可するユーザの設定

(/etc/vsftpd/chroot_listにユーザを追加する)

vi /etc/vsftpd/chroot_list

f:id:auroralights:20210828171001p:plain
※上記画像ではauroraというユーザをchroot_listに追加。


/etc/vsftpd/chroot_listを保存して閉じる

4.vsftpdのサービス起動・サービス起動確認

vsftpdのサービス起動

systemctl enable --now vsftpd

f:id:auroralights:20210828171613p:plain


サービス起動確認

systemctl status vsftpd

f:id:auroralights:20210828171634p:plain
Active:がactiveになっていることを確認する

5.セキュリティの設定(ファイアウォール・SELINUXの設定)

ファイアウォールの許可設定

firewall-cmd --add-service=ftp --permanent

f:id:auroralights:20210828171953p:plain

firewall-cmd --reload

f:id:auroralights:20210828172135p:plain



ファイアウォールの許可設定確認(ftpが追加されていることを確認)

firewall-cmd --list-all

f:id:auroralights:20210828172312p:plain


SELinuxを有効にしている場合は、ブール値の変更が必要です。
SELinuxの状態確認

getenforce

enforcing:SELinuxは有効であり、アクセス制御が有効
permissive:アクセス制御は無効だが警告Msgを表示
disabled:SELinuxは無効



SELinxが有効な場合は以下コマンドでブール値の変更

setsebool -P ftpd_full_access on
getsebool -a | grep ftpd_full_access

ftpd_full_access --> onと表示されることを確認する。


FTPでのファイル転送

WinSCPやFFFTPでCentOS8に接続して、ファイル転送ができることを確認します。今回はWinSCPでファイル転送を試してます。


WinSCPを起動します。
f:id:auroralights:20210828173103p:plain


ログイン画面で以下のように入力し、ログインを押下します。
転送プロトコル:FTP
ホスト名:FTPをインストールしたサーバのIPアドレス
ユーザ名:
パスワード:
f:id:auroralights:20210828204140p:plain


Windowsのローカルの「test_ftp」ファイルを選択し、右クリックからアップロードを選択します。(アップロード画面が表示される場合は「OK」を選択します)
f:id:auroralights:20210828205158p:plain


CentOSに「test_ftp」ファイルがアップロードされたことを確認します。
f:id:auroralights:20210828205307p:plain


参考情報

SFTPについて

SFTPはSSH通信でFTP接続をするもので、SSH接続可能なユーザであればSFTPの接続が可能です。FTPサーバ側の設定を変更する必要はりません。

ですので、SSH接続可能なユーザであれば、WinSCPやFFFTPでSFTPでサーバに接続することが可能です。


rootでのFTP接続

デフォルトではrootはログイン拒否されています。
以下の設定ファイル(ftpusers・user_list)内の「root」をコメントアウトすることで、rootでFTP接続することが可能となります。

vi /etc/vsftpd/ftpusers

root⇒#root

vi /etc/vsftpd/user_list

root⇒#root

【資格】今後の資格取得のスケジュール(希望的観測)

33歳からIT業界に転職して数年。大変なことも多いですが、何とか生き残らなければいけません。
業務量・残業次第でスケジュールが変更になる可能性がかなりありますが、来年末までの資格取得のスケジュールを記事にします。
かなり希望的観測であることを最初に断っておきます。

ここに書いているような資格はもっと若いうちに取得しておくべきなのでしょうが、スタートが何分遅いので仕方がありません。


【目次】

資格取得についての考え

優秀な人間は資格を持っていない(取得しない)とか、資格なんてとっても意味ないみたいな「資格不要論」をよく目にしたり、耳にしたりすることがあるが、私はそうは思いません。
特にIT業界であれば、資格は積極的に取得するべきだと思います。
その理由は以下の通りです。

■資格取得のメリット

  • スキル・技術力の証明となる
  • 体系的に学習できる
  • 就職・転職や、別プロジェクトへの参画などで有利に働く
  • 会社からの評価が上がる
  • 自分の市場価値が上がる
  • 現在のプロジェクトで使っている技術の資格を取得すると、仕事にすぐに活かすことができる
  • IT企業だと受験料を会社が負担してくれるため、実質無料で資格を取得できる場合が多い
  • IT企業だと資格によっては報奨金をくれる会社もある

次に私が思う、資格取得での懸念事項やデメリットは以下の通りです。

■資格取得の懸念事項・デメリット

  • 資格を取得したのはいいが、丸暗記で理解が不足しており、仕事に活かせない
    Linuxを業務で使っている人がLPICを取得するのと、業務未経験の人がLPICを取得するでは習熟度合いが異なりますよね(学習方法にもよりますが)。ただ、初学者の場合はある程度は仕方がないとも思います。しっかりと理解したうえで資格を取得できるのがベストですが、まずは丸暗記でも資格を取得して、継続して学習することが重要だとも思います。
  • 計画性を持った資格の取得をしないと意味がない(現在の仕事、今後の仕事に活きる資格を取得しないと意味がない)
  • 試験に不合格だと受験料を自費で払う必要がある
    多くの会社の場合は「合格」した場合だけ、受験料を負担してくれると思います。ITの資格は高額なものが多いので厳しいです。。。
  • 学習時間の確保
    人生は一度きりなので、仕事、学習、プライベートともに充実できるようにしたいですよね。難関試験だと多くの学習時間の確保が必要になります。通勤などの時間を有効に学習時間に使ってプライベートも充実させたいですね。

2021年中に取得したい資格

2021年中に取得したい資格は以下の通りです。
かなり基礎的な資格を取得するつもりです。ただし、毎月1資格というタイトなスケジュールなので、厳しいかもしれません。

年月 カテゴリ 資格名
2020/9 データベース ORACLE MASTER Bronze DBA Oracle Database Fundamentals (1Z0-085-JPN)
2020/10 プログラミング Excel VBA スタンダード
2020/11 Linux LPIC 102
2020/11 一般教養 簿記3級
2020/12 クラウド AWS クラウド プラクティショナー


■ORACLE MASTER Bronze DBA Oracle Database Fundamentals (1Z0-085-JPN)
旧体系のBronze 12c SQL基礎は取得済みです。
12cのDBAを取得するよりも、新体系のDBAを取得しようと思います。
auroralights.jp


ORACLE MASTERの旧体系、新体系の違いなどは割愛しますが、興味がある方は以下のサイトをご確認ください。
www.oracle.com


■Excel VBA スタンダード
自分がやりたいことの中に「業務改善」があります。
Excelを使っている職場は多いですし、Excelの関数やVBAで業務改善できることはたくさんあると思います。
なので、VBAは私の強みとして学習を続けたいと思っています。

現時点でも合格できると思いますが、しっかりと基礎を固めるためにアウトプットしながら学習するつもりです。


■LPIC 102
IT業界ですと、Linuxの知識は一般常識として持っておきたいですね。
LPIC101はずいぶん前に取得しているので、LPIC102を取得するつもりです。
LINUCという資格もできていますが、とりあえずはLPIC102の取得を目指します。


■簿記 3級
他の取得予定の資格とは毛色がかなり違う資格です。
以前、会計システムへのデータ連携で考慮漏れがあり大きな差額(障害)が発生してしまい、リカバリをする必要がありました。
その際に、会計システム担当者などと打ち合わせをするのですが、私の教養のなさ、会計の知識のなさに焦りを感じました。
障害が解決するまで、毎日通勤時間などにスマートフォンで会計の勉強をしていたのですが、全然足りませんでした。

一般教養として、簿記3級を取得しようと思います。


■AWS クラウド プラクティショナー
クラウドの学習の第一歩。
年内にAWS クラウド プラクティショナーを取得したい。

2022年中に取得したい資格

2022年はもっとよく考えなければいけませんが、なんとなく以下の資格を考えています。
CCNAがあと2年ほどで切れるはずなので、Ciscoの資格もどうしようかと悩み中です。

カテゴリ 資格名
クラウド AWS ソリューションアーキテクト -アソシエイト
IPA 基本情報技術者認定試験
データベース ORACLE MASTER Silver SQL 2019 1Z0-071-JPN: Oracle Database SQL
Linux LPIC 2
一般教養 簿記2級
運用 ITIL



とりあえずは2021年の目標資格を取りこぼさないように頑張るつもりです。
以上です。

【VBA 練習問題】セルの値を別シートに1列で表示する ~Do While文の練習~

VBAのツールを作ることはあるものの、しばらくコードを書いていないと忘れてしまいます。
自分の勉強のために、練習でコードを書いてみようと思います。


【目次】

練習問題

f:id:auroralights:20210811195053p:plain
上の画像のようにSheet1のデータをSheet2にコピーするVBAを作成したい。
Sheet1のデータの定義は以下の通りです。


<Sheet1のデータの定義>

  • セル「B2」からデータは始まる・データがある行は、必ずB列にデータがある
    (B列にデータがなければその行にデータはない)
  • B列にデータがない行があれば、それ以降の行にもデータは存在しない
  • 複数のデータがある行は、B列から右側の連続した列に順番にデータが入る。
    (データが2つなら、B列C列にデータが入る)


<コピーの順番>
Sheet1からSheet2にコピーするデータの順番は、Sheet1のデータを上の行から1行ずつ(行に複数データがある場合は、左の列から右の列の順番で)、Sheet2のA列に上から順番に入力することとします。


VBAのコード

いろいろな書き方があると思いますが、私は以下のように書きました。
(コメントが煩わしいかもしれません。。。)

Sub oneCol()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    
    'Sheet1、Sheet2を変数ws1、ws2に格納
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")

    '繰り返し処理用の変数i,j,kを定義し、初期値を格納
    Dim i As Long: i = 2  '2行目から処理を開始するので、初期値に2を格納
    Dim j As Long: j = 2  'B列から処理を開始するので、初期値に2を格納
    Dim k As Long: k = 1  'Sheet2の1行目からSheet1のデータを入力させるので、初期値1を格納

    Do While ws1.Cells(i, 2) <> ""  '2行目からデータがない行まで繰り返し
        Do While ws1.Cells(i, j) <> ""  'B列からデータがない列まで繰り返し
            ws2.Cells(k, 1) = ws1.Cells(i, j)  'Sheet1のデータをSheet2に入力
            k = k + 1  'Sheet2で次にデータを入力する行を指定するために+1
            j = j + 1  '次の列を指定するために+1
        Loop
        i = i + 1 '次の行を指定するために+1
        j = 2  'B列から処理をスタートするために、2を格納
    Loop

End Sub

考え方

2つの繰り返し処理で考えました。

  • 1つ目の繰り返しは、セル「B2」からB列のデータがない行まで1行ずつ行数をプラスする処理。
  • 2つ目の繰り返しは、1つ目の繰り返しで1行ずつ行数がプラスされるので、その行でB列からデータがない列まで1列ずつプラスする処理。

f:id:auroralights:20210811200615p:plain

上の2つの繰り返しに、Sheet1のデータをSheet2へ入力する処理をプラスしました。


今回は以上となります。