Linux:ワイルドカードを使用し複数のファイルを削除(rm)

Linuxでファイルやディレクトリを削除する時はrmコマンドを使って削除をしますが、複数のファイルを削除したい場合があります。
ワイルドカードを使用すれば同じ名前で始まるファイルなどを一度に複数削除することができます。
rmコマンドでワイルドカードを使用し、複数のファイル削除した時のメモを記載します。


■ 書式(ワイルドカード使用)

rm [オプション] *[文字列]
rm [オプション] [文字列]*

■ 使用方法

削除対象のディレクトリに移動し、ディレクトリの中身を参照します。

# cd /var/www/html/hoge/
# ls
file_1.txt  file_2.txt  file_3.html  hoge_1.gif  hoge_1.jpg  hoge_2.jpg

拡張子がtxtのファイルを複数同時に削除する場合は下記のように指定します。

# rm -rf *.txt
# ls
file_3.html  hoge_1.gif  hoge_1.jpg  hoge_2.jpg

txtファイルが削除されることがわかります。
また、「hoge_」で始まるファイルを複数同時に削除する場合は下記のように指定します。

# rm -rf hoge_*
# ls
file_3.html

「hoge_」で始まるファイルが全て削除されます。
共通の名前のファイルを同時に削除したい場合など便利かもしれないです。


Linux:cron(クーロン)の説明とcrontabコマンドの使用方法

WEBシステムを作成・運営などをする場合、cronクーロン)を設定して、定期的なバッチ処理やデータのバックアップ、サーバの時刻合わせなど、色々な面で使用することがあります。
他にも色々な使い方がありますが、今回はcrontabコマンドの基本的な使用方法をメモします。


cron(クーロン)について

クーロンとは設定した内容を定期的に実行するための機能です。
実行したい時間と内容を記述し、定期的にスクリプトや、コマンドなどを自動実行します。
cronを利用する場合は、サーバにcrondが動作している必要があり、通常はLinuxでは自動的にcrondが稼働するように設定されているようです。
クーロンは、運営サイトのバッチ処理やバックアップなどを定期的に処理することができるのでとても便利な機能です。


crontabコマンド

コマンドやバッチ処理を指定した時間に自動実行します。crontabはviの操作方法で設定します。
書式は以下のようになります。

crontab [-u ユーザー名] [オプション]

※crontabで作成した設定内容は/var/spool/cron/に作成したユーザー名で保存されます。

■ crontabのオプション

-u ユーザー名 他のユーザーのcrontabを設定する場合に指定します。rootユーザのみ使用できます。
また、-uオプションは省略可能です。省略した場合は現在のユーザーで設定されます。
-e crontabの編集をします。
-l crontabの内容を表示します。
-r crontabの内容を削除します。全ての設定が削除されるので注意が必要です。

※オプションの-rはcrontabの設定内容を全て削除してしまうので、-eで設定する際にキーボードの隣のキーなので注意が必要です。

■ crontabの使用方法

crontabの編集をする場合

# crontab -e

ユーザーを指定して編集する場合

# crontab -u hoge -e

crontabの設定を表示する場合

# crontab -l

ユーザーを指定してcrontabの設定を表示する場合

# crontab -u hoge -l

crontabの設定を削除する場合
※全ての設定が削除されるので設定を削除する場合は-eで削除する方がいいと思います。

# crontab -r

ユーザーを指定してcrontabの設定を削除する場合

# crontab -u hoge -r

Linux:mvコマンドでディレクトリ・ファイル名変更

Linuxでファイル名を変更したい場合があります。mvコマンドを使用するとファイル名を変更することができます。
mvコマンドはディレクトリやファイルを指定した場所に移動するために使用していましたが名前変更でも使用できるのでメモします。

mvコマンド

ディレクトリやファイルをしての場所に移動します。
また、mvコマンドは移動だけではなく、ファイル名の変更にも使用されます。

■ 書式

mv [オプション] [移動元(変更前ファイル名)] [移動先(変更後ファイル名)]

■ オプション

-f:移動先に同じ名前のファイルが存在する場合、強制的に上書きします。
-i:移動先に同じ名前のファイルが存在する場合、上書きするか確認します。
-u:移動先に同じ名前のファイルが存在する場合、タイムスタンプが新しければ移動します。
-b:移動先に同じ名前のファイルが存在する場合、バックアップを作成します。

※「-f」オプションがない場合でも同じ名前のファイルが存在した場合、上書きされる可能性があるので注意が必要です。

■ 使用例

hoge1.txtをhoge2.txtに名前を変更します。

# ls
hoge  hoge1.txt

hoge1.txtというファイルが存在します。
mvコマンドでファイル名を変更します。

# mv hoge1.txt hoge2.txt
# ls
hoge  hoge2.txt

hoge1.txtがhoge2.txtというファイル名に変更されました。

また、hoge2.txtをhogeディレクトリに移動したい場合は下記のように実行します。

# ls
hoge  hoge2.txt

mvコマンドでhoge2.txtをhogeディレクトリに移動します。

# mv hoge2.txt hoge/hoge2.txt
# ls
hoge

hogeディレクトリに移動し、hoge2.txtが存在することを確認します。

# cd hoge/
# ls
hoge2.txt

hogeディレクトリにhoge2.txtが移動したことを確認できます。

Linux:userdelで不要なユーザーアカウントを削除する

Linuxでユーザを作成した時に間違って登録してしまった場合や不要になったユーザを削除したい場合があります。
Linuxでユーザを削除するにはuserdelコマンドを使用します。
メールアカウントを削除する場合などはユーザのメールボックスも削除したいので、ユーザのホームディレクトリごと削除するのがいいと思います。
userdelコマンドのオプションで「-r」を指定することでユーザのホームディレクトリも削除することが可能です。
また、ユーザの削除を行う時に「-r」オプションを指定しないとユーザのホームディレクトリがサーバに残ってしまい、同じ名前のユーザを作成した場合にディレクトリが存在する可能性がありますので不要であれば削除した方がいいと思います。
下記にuserdelコマンドの説明と使用例を記載します。


userdelコマンド
Linuxサーバーに登録されているユーザーアカウントを削除します。
ログインしているユーザーを削除することはできません。
オプションで「-r」を指定することでユーザのホームディレクトリも同時に削除することができます。


■ 書式(オプション)

・「-r」オプションなしの場合

userdel [ユーザー名]

・「-r」オプションありの場合

userdel -r [ユーザー名]

■ 使用例

hoge1ユーザを削除する場合です。

userdel hoge1

hoge1ユーザが削除されます。
しかし、ユーザのホームディレクトリはサーバに残ったままになります。

hoge2ユーザをホームディレクトリごと削除します。

userdel -r hoge2

hoge2ユーザとhoge2ユーザのホームディレクトも同時に削除されます。

※複数のユーザが同じホームディレクトリに設定されている場合があるので注意が必要です。
※ユーザを削除する場合は対象のユーザの設定内容をしっかり確認してから削除することをお勧めします。

Linux:FTPユーザごとにホームディレクトリを指定する(vsftpd)

FTPに接続するユーザごとにホームディレクトリを指定し、上位階層へのアクセスを拒否する設定を記載します。
FTPサーバ(vsftpd)を使用しており、FTPユーザごとにアクセス制限をかける必要があったので、その時に行った際の手順やvsftpdの設定内容などをメモします。
下記の設定を行うことでFTPユーザが上のディレクトリに移動できなくなりました。

■ FTPサーバ(vsftpd

FTP(ファイル転送)サーバの一つです。
yumでインストールすることができます。


■ 設定手順

1.FTPで使用するユーザを作成します。

ユーザの作成については、Linux:Linuxのadduserコマンドで新規ユーザを作成する
で紹介しています。

2.ユーザが作成されたことを確認します。

3.vsftpdディレクトリに移動します。

# cd /etc/vsftpd/

vsftpdディレクトリ内を確認すると下記のようなファイル・ディレクトリが存在します。

# ls
chroot_list
ftpusers
user_list
vsftpd.conf
vsftpd_conf_migrate.sh

サーバによって存在しないファイルもあります。
その場合は必要なファイル、ディレクトリを作成します。

4.vsftpd_user_confディレクトリを作成する

vsftpd.confの設定に下記の内容を記載します。
ユーザごとの設定ファイルを参照する為のパスを記載します。

user_config_dir=/etc/vsftpd/vsftpd_user_conf

vsftpd_user_confディレクトリを作成します。

# mkdir /etc/vsftpd/vsftpd_user_conf

vsftpdディレクトリ内を確認します。

# ls
chroot_list
ftpusers
user_list
vsftpd.conf
vsftpd_conf_migrate.sh
vsftpd_user_conf

vsftpd_user_confディレクトリが作成されたことが確認できます。

5.追加したユーザの名前のファイルを作成し、ホームディレクトリを設定します。

※FTPの時だけ別のホームディレクトリを指定する場合に記載します。

hogeユーザを作成した場合

# vi vsftpd_user_conf/hoge

新規作成したファイルにホームディレクトリの設定をします。

local_root=/var/www/html/hoge

6.user_listに新規ユーザを追加し、FTP接続を可能にします。

user_listはvsftpd.confの設定により、意味が異なります。

vsftpd.conf設定が下記の場合

userlist_enable=YES
userlist_deny=NO

user_listファイルを編集します。

# vi /etc/vsftpd/user_list

user_listファイルにユーザ名を設定します。

user
hoge

7.追加したユーザが指定したディレクトリより上の階層にいけないように設定します。

vsftpd.conf設定が下記の場合

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

chroot_listファイルを編集します。

# vi chroot_list

chroot_listに追加したユーザを設定します。

hoge

8.vsftpdを再起動します。

# /etc/init.d/vsftpd restart
vsftpd を停止中:                                           [  OK  ]
vsftpd 用の vsftpd を起動中:                               [  OK  ]

※vsftpd.confを変更していない場合は再起動しなくてもOKです。

9.追加したユーザでFTPに接続します。

上記で指定した/var/www/html/hogeにアクセスします。
また、上位ディレクトリへアクセスできないことが確認できます。

※ファイル、ディレクトリが編集できない場合は、ファイル、ディレクトリの所有者・所属グループを変更する必要があります。


■ ftpusersファイル

アクセス制御ファイルの一つです。
user_listでユーザを設定していてもftpusersに記載されているユーザーはFTPサーバーにアクセスできません。
ユーザーがFTPへ完全に接続させないようにする場合はftpusersにユーザを記載します。


■ user_listファイル

vsftpd.confの設定により、user_listの意味が異なります。
下記にvsftpd.confの設定内容を記載します。

「user_listファイルに追加したユーザーのアクセスを禁止する場合」

userlist_enable=YES
userlist_deny=YES

「user_listファイルに追加したユーザーのアクセスを許可する場合」

userlist_enable=YES
userlist_deny=NO

■ chroot_listファイル

vsftpd.confの設定で有効な場合、制限をかけたいユーザーを設定できます。
設定したユーザーは上位ディレクトリへの移動ができなくなります。
chroot_list_enableをYESにした場合、chroot_list_fileで指定したchroot_listファイルは必須になります。
ファイルが存在しない場合、全てのユーザがログインできなくなるので、ユーザいない場合でも、空のファイルを作る必要があります。

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list