Hands-on learning record blog

ハンズオン学習記録、更新のない日は技術本を読む📚

6/23(日)Linux学習

AWSのCloudShellを起動】

 

・グロブ

→特殊記号を使用して、ファイル名を指定すること

以下は、「aかbで始まり、その後は任意の文字列」(アスタリスク)で指定

[cloudshell-user@ip-10-130-60-84 ~]$ ls -l [ab]*
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 a1
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 b1
[cloudshell-user@ip-10-130-60-84 ~]$ 

 

※ a~cを指定する場合、[a-c](ハイフン)とすることで指定できる

※ [^ab](キャレット)とすることでab以外を指定できる

※ t?.shを指定した場合、?は任意の一文字として指定される

※ {b*,c*,*est*}を指定した場合、波括弧&カンマで複数条件で指定できる

 

grepコマンド

→ファイルまたは入力ストリームから、あるパターンに一致する行を表示する

以下は、/etc/passwdディレクトリ内のrootに一致する行を表示している

[cloudshell-user@ip-10-130-60-84 ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[cloudshell-user@ip-10-130-60-84 ~]$ 

 

・iオプション

→大文字・小文字を区別しない

・vオプション

→一致しない行を表示する

 

正規表現

・.(ドット)は任意の一文字

・*(アスタリスク)は直前の繰り返し

 

・lessコマンド

→非常に大きなファイルを表示する際に使用するコマンド

cloudshell-user@ip-10-130-60-84 ~]$ less /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
/etc/passwd (END) ←Qキーで終了できる(プロンプトに戻る)

※ スペースキー(表示を進める)、B(1画面分戻る)、F(1画面分進む)

 

→moreの拡張版がlessコマンド

→lessでファイル表示中に検索ができる→?を入力した後に指定する

※ N(ヒットした箇所へ移動)

 

・headコマンド

→ファイルの先頭部分を表示するのに便利なコマンド

以下は、/etc/passwdの中身を20行表示するように指定している

[cloudshell-user@ip-10-130-60-84 ~]$ head -20 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/usr/sbin/nologin
systemd-oom:x:998:998:systemd Userspace OOM Killer:/:/usr/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/usr/sbin/nologin
cloudshell-user:x:1000:996::/home/cloudshell-user:/bin/bash
[cloudshell-user@ip-10-130-60-84 ~]$ 

 

・tailコマンド

→末尾を表示(最新のログ等を表示するのに便利)

 

・権限について(パーミッション

→どの種類のオーナーがこのファイルに対して何ができるか

例)-rwxr-xr-x 1 root root

「-」ファイルの種類

「rwxr-xr-x」パーミッションの設定状態

※ 所有者 | 同グループ | その他

 r  ... Read 読み取り権限

 w ... Write 書き込み権限

 x ... Excute 実行権限

 - ... 権限なし

「1」ファイルがリンクされている数

「root root」所有者がrootユーザー、所有グループがrootユーザー

 

※ -rwxrwxrwx(フル権限)-777(2進数で表記されることも)r4,w2,x1

 

・chmodコマンド

→権限変更する際に使用するコマンド

 

・スーパーユーザ(ルートユーザ)への切り替え方法

以下は、セキュリティの高いファイルをcatコマンドで表示しようとした結果、

現在のアカウント(cloudshell-user)では開く権限がないと表示された

[cloudshell-user@ip-10-130-60-84 ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[cloudshell-user@ip-10-130-60-84 ~]$ 

 

→sudoコマンドでスーパーユーザとしてコマンドを実行するように指定し、開けた

[cloudshell-user@ip-10-130-60-84 ~]$ sudo cat /etc/shadow
root:*LOCK*:14600::::::
bin:*:19387:0:99999:7:::
daemon:*:19387:0:99999:7:::
adm:*:19387:0:99999:7:::
lp:*:19387:0:99999:7:::
sync:*:19387:0:99999:7:::
shutdown:*:19387:0:99999:7:::
halt:*:19387:0:99999:7:::
mail:*:19387:0:99999:7:::
operator:*:19387:0:99999:7:::
games:*:19387:0:99999:7:::
ftp:*:19387:0:99999:7:::
nobody:*:19387:0:99999:7:::
dbus:!!:19859::::::
systemd-network:!*:19859::::::
systemd-oom:!*:19859::::::
systemd-resolve:!*:19859::::::
cloudshell-user:!!:19859:0:99999:7:::
[cloudshell-user@ip-10-130-60-84 ~]$ 

 

→ sudo su - を実行すると、ルートユーザーに切り替わる

[cloudshell-user@ip-10-130-60-84 ~]$ sudo su -
[root@ip-10-130-60-84 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@ip-10-130-60-84 ~]# exit
logout
[cloudshell-user@ip-10-130-60-84 ~]$ 

※ 「su 」(スイッチユーザー)、「- 」(設定を引き継ぐ)

  「exit」一つ前のユーザーに戻る

 

→sudoersファイルに指定されていない場合、passwordを入力するよう求められる

 ctrl + c で入力待ち状態を解除できる

 

Linuxに接続するには、SSH接続する必要がある

→ネットワークを介してコンピューターに安全に接続をして操作するためのツール

(パスワード認証が必要)

 

MacでEC2へ接続する方法

ssh -i linux-server-key.pem ec2-user@[パブリックIPアドレスを入力]

確認メッセージが表示されるため、yesを入力

権限が緩いと警告が表示されるため、chmodで権限変更

chmod 400 linux-server-key.pem(所有者のみ読み取れる)

ssh -i linux-server-key.pem ec2-user@[パブリックIPアドレスを入力]

→EC2インスタンスへログインすることができる

 

Windowsは「Teraterm」というソフトウェアを使ってログインする

Teratermを起動

ホストにパブリックIPアドレスを入力し、OK

サーバー名「ec2-user」を入力し、秘密鍵を選択し、設定した鍵を選択

サーバーに接続完了

 

※ ログの取得、ログの取得を中断、一時停止することができる

Linuxに対するファイルの送受信も可能

→鍵ファイルをドラッグアンドドロップすると送信先を指定できる(/tmpを指定)

[ec2-user@ip-172-31-32-225 ~]$ cd /tmp
[ec2-user@ip-172-31-32-225 tmp]$ ls
AWS_Key.pem
systemd-private-a944e37c7d144b73bb287233b3cda674-chronyd.service-AIsClk
systemd-private-a944e37c7d144b73bb287233b3cda674-dbus-broker.service-YHAhsw
systemd-private-a944e37c7d144b73bb287233b3cda674-policy-routes@enX0.service-aYlCYf
systemd-private-a944e37c7d144b73bb287233b3cda674-systemd-logind.service-1twLeZ
systemd-private-a944e37c7d144b73bb287233b3cda674-systemd-resolved.service-OPEiuk
[ec2-user@ip-172-31-32-225 tmp]$

 

→ダウンロードもできる(/tmp/AWS_Key.pemと指定するとDLできる)

 

※ ls -l → 「ll」ショートカットコマンドがある

 

ドットファイル

→ls -aコマンドで隠しファイルを表示できる

→ls -laコマンドで隠しファイルを詳細表示できる

 

・リダイレクションについて

→リダイレクション「>」は、llコマンドの実行結果をbファイルに書き込んでいる

※ 上書きされる

[cloudshell-user@ip-10-134-27-201 ~]$ ll > b
[cloudshell-user@ip-10-134-27-201 ~]$ ll
total 4
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 13:02 a
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 11:01 a1
-rw-r--r--. 1 cloudshell-user cloudshell-user 464 Jun 23 13:02 b
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 11:01 b1
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 11:01 c1
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 11:01 t2.sh
-rw-r--r--. 1 cloudshell-user cloudshell-user   0 Jun 23 11:01 test1.txt
[cloudshell-user@ip-10-134-27-201 ~]$ cat b
total 0
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 13:02 a
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 a1
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 13:02 b
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 b1
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 c1
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 t2.sh
-rw-r--r--. 1 cloudshell-user cloudshell-user 0 Jun 23 11:01 test1.txt
[cloudshell-user@ip-10-134-27-201 ~]$

 

→「>>」は追記の動きをするコマンド

※ 出力内容を指定したファイルの最後に追記する

 

・パイプについて

→一つのコマンドの出力を別のコマンドの入力として渡す

例)ls | grep b

lsで表示された内容をgrepに渡して、bが含まれる行を抽出する動きとなる

[cloudshell-user@ip-10-134-27-201 ~]$ ls | grep b
b
b1
[cloudshell-user@ip-10-134-27-201 ~]$ 

 

→ps auxコマンドは、現在Linux機で動いているプロセス(実行中のプログラム)を

 一覧表示できる

[cloudshell-user@ip-10-134-27-201 ~]$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
cloudsh+       1  0.0  1.0 619896 43092 ?        Ssl  13:00   0:00 node /var/lib/amazon/cloudshell/on-container-launch.js
cloudsh+      21  0.0  0.0   7168  3296 ?        Ss   13:00   0:00 /bin/sh -c sudo dockerd | sudo tee /var/log/docker-daemon.log
root          23  0.0  0.2  17620  7876 ?        S    13:00   0:00 sudo dockerd
root          24  0.0  0.1  17620  7728 ?        S    13:00   0:00 sudo tee /var/log/docker-daemon.log
root          29  0.0  0.0   7864  1280 ?        S    13:00   0:00 /usr/bin/coreutils --coreutils-prog-shebang=tee /usr/bin/tee /var/log/
root          31  0.0  1.9 1391224 77896 ?       Sl   13:00   0:00 dockerd
root          50  0.4  1.1 1215072 44684 ?       Ssl  13:00   0:07 containerd --config /var/run/docker/containerd/containerd.toml
cloudsh+     161  0.0  0.0   4284  2904 pts/0    Ss+  13:00   0:00 tmux -l -f /var/lib/amazon/cloudshell/tmux.conf new-session -A -D -s 7
cloudsh+     168  0.0  0.0   4428  2960 ?        Rs   13:00   0:00 tmux -l -f /var/lib/amazon/cloudshell/tmux.conf new-session -A -D -s 7
cloudsh+     169  0.0  0.1   7564  4396 pts/1    Ss   13:00   0:00 -bash
cloudsh+     197  0.0  0.0   7648  2936 pts/1    R+   13:25   0:00 ps aux
[cloudshell-user@ip-10-134-27-201 ~]$ 

 

・wcコマンド(Word Count)

→何行あるか表示するコマンド