20211026のLinuxに関する記事は7件です。

Linux パッケージ管理コマンド対応表

Linuxでのパッケージ管理 Linuxにはいろいろとパッケージを管理するコマンドがありますが、行っている操作は共通している部分が多いと思っています。 "apt install" や"yum update"、"pacman -R"といったものは、方言のようなものかもしれません。 備忘録、勉強としてまとめてみました。間違いがありましたら、ご指摘お願いします。 パッケージ管理コマンド インストール アンインストール アンインストール(設定ファイルも含めて削除) apt install remove purge yum install remove --- pacman -S -R -Rn zypper in/install rm/remove --- dnf install remove --- パッケージ管理 更新(リポジトリ) 更新(パッケージ) 検索 apt update upgrade search yum --- update search pacman -Sy -Syu -Ss zypper ref/refresh up/update se/search dnf --- upgrade search ---のところは、対応するコマンドなし。 yum,dnfコマンドには、リポジトリのパッケージ情報を更新するコマンドがありません。(aptだとapt updateに対応するコマンド) yum updateやdnf updateを実行した場合、yum upgrade,dnf upgradeコマンドが代わりに実行されます。(つまり、パッケージが更新されます。) pacmanでの-Syオプションをつけての実行は、推奨されていません。 zypperコマンドは、installをinなど略して記述することが可能です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SSHトンネリングコンフィグの書き方

SSHトンネリングとは SSHトンネリングは、SSHポートフォワーディングとも言われる接続方法です。 例えば、とあるLAN内で公開されているWebサーバに対して、外部NWから接続したい時に、外部公開しているSSHサーバが存在している場合、SSHサーバとのSSH接続を経由して、目的のWebサーバに接続するといった接続方法のことです。 詳しくは、以下のURLを参照のこと。 SSHポートフォワーディング(トンネリング)とは - 小粋空間 https://www.koikikukan.com/archives/2016/09/15-000300.php 基本的に備忘録なので、分かりにくかったらゴメンナサイ。 多段SSH コマンド local$ ssh user@step_host -i <秘密鍵> -p <ポート> step_host$ ssh user@target_host -i <秘密鍵> Config Host STEP_HOST HostName step_host Port <ポート> IdentityFile <秘密鍵> User user Host TARGET_HOST HostName target_host IdentityFile <秘密鍵> User user ProxyCommand ssh -CW %h:%p STEP_HOST これで、ssh TARGET_HOSTのみで接続できる DynamicForward LAN内のWebサーバにSSH経由で接続する際に用いている コマンド $ ssh user@step_host -D <ローカルポート> -i <秘密鍵> Config Host STEP_HOST HostName step_host IdentityFile <秘密鍵> User user DynamicForward <ローカルポート> 上記のコマンド or Config経由でLAN内のWebを閲覧するにはSOCKS Proxyを使います。 私は、Chromeユーザなので、Chromeを使った際の接続方法 ExtensionのProxy SwitchySharpを導入 https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm?hl=ja-JP 設定画面で、Profile Name, SCOKS Host, Portを入力し、SOCKS v5ラジオボタンを選択してSaveする。 アドレスバーの横にExtensionの地球儀の様なマークが出るので、そこで設定したProfileを選択して、LAN内のWebサービスのURLやIPアドレスなどをChromeのアドレスバーに入力すれば接続できるはず。 LocalForward LAN内で運用している特定サービス(私の場合Elasticsearch)に接続する際に用いている コマンド $ ssh user@step_host -i <秘密鍵> -L <ローカルポート>:<target_host>:<ターゲットポート> Config Host STEP_HOST HostName step_host IdentityFile <秘密鍵> User user LocalForward <ローカルポート> <target_host>:<ターゲットポート> LAN内に置いてあるElasticsearchからデータを取る時に、http://localhost:<ローカルポート>みたいに使っている。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VirtualBox の初期設定 ( ubuntu 版 )

VirtualBox 検証用設定 Virtual Box Download VirtualBoxの設定 個人で使用する前提で記載しておりますのでご了承ください。 例として Lubuntu Desktop 18.04 を使用しています。 LAN 接続設定 VirtualBox の設定 ネットワーク アダプター2 ネットワークアダプタを有効化 ホストオンリーアダプターに設定します。 TELNET SSH 接続設定 VirtualBox の設定ネットワーク アダプター1 ポートフォワーディング ssh 22 , telnet 23 , ftp 21 のポートを追記します。 USBNIC の有効化 ( USBNIC を使用する場合 ) VirtualBox の設定 デバイス USB USBの設定 USBNIC の追加 で 使用する機器名を選択します。 VirtualBox の画面拡張 ファイルの場所( 基本は C ドライブだと思います ) C:\Program Files\Oracle\VirtualBox\ VBoxGuestAdditions.iso ソフトをマウント VirtualBox の ストレージ > 「 光学ドライブ 」 に VBoxGuestAdditions.iso をマウントします。 古いファイルの削除 コマンド sudo apt purge virtualbox-guest-* カーネル更新 コマンド sudo apt -y update && sudo apt -y install dkms virtualbox-guest-utils && \ sudo apt -y upgrade インストール ( Server 版の場合は mount をする必要があります ) 例として、ユーザー名を hoge で設定しています。 VBox_GAs_6.0.10 の部分は、各 version で変わります。 コマンド sudo /media/hoge/VBox_GAs_6.0.10/VBoxLinuxAdditions.run Server 版の場合は、手動でマウントコマンドを実行します。( ホームディレクトリの share にマウントする場合 ) コマンド sudo mount /dev/sr0 ~/share/ 再起動 コマンド sudo reboot 再起動後、画面拡大ができれば成功です。 共有フォルダの作成 ホストOSとゲストOSの間でファイルを共有できるようにします。samba でも同様なことができます。 例として、 vmdir という名前で共有フォルダーを作成します。ユーザー名は hoge です。 ホスト側の設定 VitualBox の設定画面に移動してください。 設定 共有フォルダー 共有フォルダーの追加 まで進んでください。 共有フォルダーのパスに ホスト OS 側のディレクトリを指定してください。 マウントポイントのパスに ゲスト OS 側のディレクトリを指定してください。 自動マウントにチェックを入れてください。 ゲスト側の設定 共有するフォルダ作成 コマンド sudo mkdir /home/hoge/vmdir && sudo chmod 777 ~/vmdir ファイル /etc/rc.local を作成 コマンド sudo vim /etc/rc.local 以下内容をコピーして保存します。内容は下記の通りで最低限動きます。 コピー #!/bin/sh sudo mount.vboxsf vmdir ~/vmdir/ 再起動時に自動でマウントする設定をします。 コマンド crontab -e 最終行に以下内容を追記します。 コピー @reboot . /etc/rc.local 権限の付与 共有フォルダの位置によっては、ユーザーの権限追加が必要です。 コマンド sudo gpasswd -a hoge vboxsf 再起動 コマンド sudo reboot 共有フォルダがマウントされていれば成功です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS CloudWatchでディスク容量とメモリ使用量を監視&アラート時に通知設定手順

CloudWatchでディスク容量やメモリ使用量まで含めて監視設定しようと思うたびにあっちこっちのサイトを見て時間を浪費してしまっていたので手順を記載します。 Linuxサーバで構築している前提の話です。 おおまかな手順 EC2インスタンスにsshで入る perlモジュールのインストール curlコマンドを実行してモニタリングスクリプトをダウンロード ダウンロードしたモニタリングスクリプトをインストール IAMユーザーを作成 認証を設定 Cronを設定 通知用SNSを作成 アラートの作成 1. EC2インスタンスにsshで入る 使っているec2サーバ内にsshコマンドで入ります。 2. perlモジュールのインストール サーバの情報をCloudWatchへ送る際にそれぞれ必要なモジュールが存在するためにインストールします。 sudo yum install perl-Switch perl-Sys-Syslog perl-LWP-Protocol-https sudo yum install gcc make perl-CPAN perl-Time-HiRes perl-XML-Parser mod_perl cpanminus 3. curlコマンドを実行してモニタリングスクリプトをダウンロード curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O 4. ダウンロードしたモニタリングスクリプトをインストール 解凍とzipファイルの削除とディレクトリ移動を同時に行なっています。 unzip CloudWatchMonitoringScripts-1.2.2.zip && \ rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon 失敗するとわかっていますがここで動作テストしてみます。 CloudWatch にデータを送信しない簡単なテストです。 ./mon-put-instance-data.pl --mem-util --verify --verbose ↓ 失敗します。 EC2インスタンスとIAMロールが関連づけられていないことが原因です。 MemoryUtilization: 9.57435398335551 (Percent) No credential methods are specified. Trying default IAM role. ERROR: No IAM role is associated with this EC2 instance. For more information, run 'mon-put-instance-data.pl --help' 5. IAMユーザーを作成 AWSのIAMのサービスページにて「ユーザを追加」を選択 ユーザ名は今回は「CloudWatch」にします。 AWS 認証情報タイプの選択はアクセスキーさえチェックが入っていればOKですがここでは2つとも入れてます。 次のステップへ。 既存のポリシーを直接アタッチを選択し、「CloudWatchAgentAdminPolicy」を選択し次のステップへ。 タグはいらないのでスキップしてユーザの作成をする 「.csvのダウンロード」を押して作成したIAMの情報を保存 この画面で出てくるアクセスキーIDとシークレットアクセスキーは後ほど使用します。 6. 認証を設定 IAMユーザーを作成したら、アクセスキーIDとシークレットアクセスキーを設定します。解凍されたファイルの中に、awscreds.templateというファイルがあるのでawscreds.confという名前でコピーして編集します。 先程追加したIAMユーザーのアクセスキーIDとシークレットキーを設定します。 cp awscreds.template awscreds.conf vi awscreds.conf # 先ほど保存したアクセスキーIDとシークレットアクセスキーを挿入します AWSAccessKeyId=[アクセスキーID] AWSSecretKey=[シークレットキー] ここで動作確認をします。 さきほどと同じようにCloudWatch にデータを送信せずに簡単なテストを実行します。 ./mon-put-instance-data.pl --mem-util --verify --verbose ↓ 動作テストに成功します MemoryUtilization: 11.2770928669156 (Percent) Using AWS credentials file <./awscreds.conf> Endpoint: https://monitoring.ap-northeast-1.amazonaws.com Payload: {"MetricData":[{"Timestamp":1635180338,"Dimensions":[{"Value":"i-025913bb8d07e4678","Name":"InstanceId"}],"Value":11.2770928669156,"Unit":"Percent","MetricName":"MemoryUtilization"}],"Namespace":"System/Linux","__type":"com.amazonaws.cloudwatch.v2010_08_01#PutMetricDataInput"} Verification completed successfully. No actual metrics sent to CloudWatch. 7. Cronを設定 cron スケジュールを設定します。crontab -e コマンドを使用して crontab の編集を開始します。5 分ごとにメモリとディスクスペースの使用状況を CloudWatch にレポートします。 crontab -e */5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron 8. 通知用SNSを作成 AmazonSNSのサービスページにて「トピック作成」を選択 タイプをスタンダードにして名前と表示名はわかりやすい名前にします。 「プロジェクト名_alert」とかで自分は結構付けます。 トピックの作成をします。 次に通知の送信先を設定するためにサブスクリプションの作成をします。 「サブスクリプションの作成」を選択します。 トピックARNはデフォルトのままでプロトコルをEメールにします。 エンドポイントには設定したいメールアドレスを設定します。 サブスクリプションの作成。 サブスクリプションが作成されましたが、ステータスがまだ保留中です。 設定したメールアドレスに確認メールが届いていますのでそちらを許可します。 このようなメールが届いていますので「Confirm subscription」を押して許可します。 この画面が出てればOKです。 9. アラートの作成 やっとアラートの設定です。 CloudWatchのサービスページにてアラームの作成を選択します。 メトリクスの選択画面でSystem/Linuxの項目ができていることがわかります。 DiskSpaceUtilization(ディスク使用率)やMemoryUtilization(メモリ使用率) をメトリクスとして選択できるようになっています。 統計を最大にして期間はデフォルト最短の5分にします。 1分にしても拡張アラート(有料)にしていないと1分ごとには測定してくれないのと無闇に欠落データをつくってしまって正確な測定結果が得られない可能性があるため5分推奨です。 今回はディスク使用率90%以上になるように設定します。 欠落データは無視するようにします。 さきほどAmazon SNSで設定したトピックを選択してアラート時の通知先設定をします。 他の設定は特に不要であれば次へ。 名前と説明を入力し次へを選択し内容を確認してアラームの作成 アラート作成まで完了 これで以上になります。 作成直後は状態がデータ不足ですが5分ごとにメトリクスをサーバから送信しているため5分後に状態がOKかアラートになるかと思います。 参考 ・AWS CloudWatchでディスク容量チェック ・CloudWatchでリソースを監視する手順。メモリやディスクの使用率を可視化しよう!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

sudoコマンドのパスワード入力の省略

linuxでよく使用するsudoコマンドには-Aオプションがあり,これを使用するとパスワード入力をスクリプトファイルの出力から行うことができ,予め用意しておくことで省略できます. 例えばパスワードがaaaaaの場合,以下のようなファイルを/tmp/askpassという名前で作成し,chmod +xをします. /tmp/askpass #!/bin/bash echo "aaaaa" そして,以下のようなコマンドを~/.bashrcに追加し,環境変数SUDO_ASKPASSのパスを毎回設定してくれるようにします. ~/.bashrc export SUDO_ASKPASS=/tmp/askpsass 設定ができると,以下のようにsudoに-Aオプションをつけることで,パスワードを環境変数SUDO_ASKPASSで設定したスクリプトから取得するようになり,パスワード入力を省略できます. パスワード入力省略実行 sudo -A bbbbb 参考 askpassについて
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

一般ユーザ間のファイルコピー

はじめに 普段当たり前に使っていて気にもとめないcpコマンドですが、今まで覚えていたことと違った出来事があったので記事に残しておきます。 一般ユーザ間のファイルコピー 同一サーバ内に存在する複数のユーザが同じファイルを触る要件があり、あるユーザからcp -pでファイルをコピーしようとすると以下のようなエラーでコピーできませんでした。 一般ユーザ間でファイルコピーした場合のエラー > cp -p /home/user1/sharefile /var/tmp/sharefile cp: `/var/tmp/sharefile' のタイムスタンプを保存中: 許可されていない操作です 自分の経験ではグループやパーミッション設定が問題なければコピーできるはずでしたが、まさか今更ファイルコピーでハマるとは・・・と思いながら調査すると、一般ユーザ間でコピーする場合、グループが同じでパーミッションも問題なかったとしても、オーナーの権限を書き換えられず、cp -p等権限を保持したコピーをする場合、エラーでコピーできないとのこと。 ちなみにvi等で直接編集したり、-pオプション無しでコピーするような場合はオーナー権限は書き換わらないため、正常に終了します。 Solarisの場合 一般ユーザ間でcp -pでコピーした場合、エラーでコピーできませんでしたが、大分昔に同じような要件のシステムがあり、その時はエラーが出るようなことは無かったはず・・・ どうにも腑に落ちず、以前よく使っていたSolarisを準備し、同じことをやってみると、Solarisではエラーとならず、オーナー権限は書き換わらないままコピーできました。 動作についてきちんと理解できていなかったなぁと痛感しつつ、OSの違いを意識させられた出来事でした。 おわりに 後日、Solarisのcpコマンドのmanを見てみると、ちゃんと今回のことについても書かれていました。 ちゃんとマニュアルは読まないといけませんね。 Solarisのcpコマンドのman抜粋 -p 保持。cp ユーティリティーは、source_file の内容を複製するだけでは なく、その ACL、アクセス日時と更新日時、拡張属性、拡張システム属 性、ファイルモード、および所有者 ID とグループ ID を保持しようと します。 cp がアクセス日時と更新日時、拡張属性、またはファイルモードを保持 できない場合、cp はそれを失敗とは見なしません。cp が所有者 ID と グループ ID を保持できない場合、コピーは失敗しませんが、cp はメッ セージを表示せずにターゲットのファイルモードから S_ISUID および S_ISGID ビットをクリアします。cp がこれらのビットをクリアできない 場合、コピーは失敗します。cp が ACL または拡張システム属性を保持 できない場合、コピーは失敗します。コピーが失敗すると、診断メッ セージが stderr に書き込まれ、(残りのオペランドすべての処理後に) cp がゼロ以外の終了ステータスで終了します。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxについて [ネットワーク]

TCP/IP ネットワーク コンピュータ間をケーブルや無線機能で接続したシステム ローカルエリアネットワークとワイドエリアネットワーク ローカルエリアネットワーク(LAN) 学校や自宅などの閉じられた複数のコンピュータを相互接続したネットワーク ワイドエリアネットワーク(WAN) 離れた場所にあるLANとLANを結んだネットワーク LANはコンピュータ同士をLANケーブルで結び、WANはLAN同士を通信回線で結ぶ IP インターネットプロトコル ネット上でコンピュータ同士が決まった手順でデータを送受信する IPは送り先とデータの情報からなるパケットを送るだけ pingコマンドでデータが送信され、データを受けた機器から確認メッセージが返ってくるか確認できる ping ターゲット ターゲット(ホスト名やIPアドレス)にデータを送り、返答が来るまでの時間を表示 -cオプションをつけて、pingを発行する回数を指定することも可能 pingコマンドは「Ctrl」Cを押すと止まる 例外として、セキュリティ対策としてpingに応答しない場合もある TCPとUDP TCP(トランスミッション コントロール プロトコル) IPの仕組みでデータを送信 TCPはデータのまとまりを1つ受け取るとデータ破損などのエラーを確認し、不備があれば データの再送を依頼する UDP(ユーザ データグラム プロトコル) エラー確認やデータの再送依頼は行わない その分データを高速に送信可能 IPアドレス データの送受信にはお互いの場所を示すアドレスが必要 IPv4 プロトコルの種類 他にもIPv6がある 4バイト、16進数8桁で表せるアドレス 16進数 C0 A8 01 64 2進数 11000000 10101000 00000001 01100100 10進数 192 168 1 100 このように16真数から10真数に変換しつないで表示する IPアドレスのクラス IPアドレスは組織に対して割り当てられたもので、範囲が連続したアドレスになっている ホストアドレスのホスト部の前ビットが0のアドレスはネットワーク自身のアドレスである ブロードキャストアドレス ホスト部の前ビットが1のアドレスはネットワーク内すべてに届く特殊なアドレスのこと コンピュータに割り当てることはできない 経路の確認 LANとLANまたはLANとWANをつなげる場合には、ゲートウェイ(ルーター)が接続される 自分のコンピュータから通信先のコンピュータまでに仲介する複数のゲートウェイを調べるには traceroute ターゲット tracepath ターゲット ターゲットや途中のゲートウェイへデータを送り、ゲートウェイから返答が返ってくるまでの時間を表示する ルーティングの確認 ip route [オプション] ss [オプション] ネットワークの状況を表示するためのコマンド データの流れる方向を調べることができる オプション 意味 -V バージョン情報 -a すべてのソケットを表示 -n サービス名に変換せずに表示 -r ホスト名を名前解決 -p ソケットを使用しているプロセスIDを表示 -s 集約したソケット情報 -4 IPv4のソケットのみ表示、他のオプションと併用 -6 IPv6のソケットのみ表示、他のオプションと併用 -t TCPのソケットのみ表示 -u UDPのソケットのみ表示 -e 詳細なソケット情報を表示 ルーティングの変更 ip [オプション] r[oute] {コマンド|help} または route ip route {add|del} ターゲット/サブネット via ゲートウェイアドレス dev インターフェース route add [-net|-host] ターゲット [netmask サブネット] [インタフェース] コマンドの実行には管理者権限が必要 ポート番号 TCP/IPで通信を行う場合、IPアドレスに加えサービスごとにポート番号を使う ポート番号がどのサービスに対応するかは規格として取り決められている 一般的なサービスはetc/servicesファイルに書かれている ポート番号 サービス名 20 FTP(制御) 21 FTP(データ) 22 SSH 23 Telnet 25 SMTP 53 DNS 80 HTTP 443 HTTPS ssコマンドでLinuxのサービスやネットワークの状況を表示できたり、提供されているサービスを調べることができる たとえば & ss -at State Recv-Q Send-Q Local Address:Port peer Address:Port LISTEN 0 128 *:sunrpc *:* .... (略) ssコマンドにオプションの-aと-tをつけてTCPサービス一覧を表示できる 参考書籍 『Linux標準教科書 v3.0.2』 LPI-Japan 2019年
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む