- 投稿日:2021-03-05T22:26:50+09:00
Linux sedコマンド メモ
目的
- 特定の文字列の置換
s///g とは何か
- s/A/B/g は A という文字を B という文字に置換してね!という意味
- s は置換をしてね!という意味
- g はマッチしたとこ全部置換してね!という意味
■ サンプルファイル
sample.txta,b,c d,e,f g,h,i j,k,lすべてのコンマを*に置換
$ sed 's/,/*/g' sample.txt a*b*c d*e*f g*h*i j*k*l※ s///g の最後の g がないと、各行の最初にマッチした文字のみ置換する
$ sed 's/,/*/' sample.txt a*b,c d*e,f g*h,i j*k,l2行目だけコンマを*に置換
★ 行数を s の前に書く
$ sed '2s/,/*/g' sample.txt a,b,c d*e*f g,h,i j,k,l1行目のコンマを*に置換、3行目のコンマを@に置換
★ オプション e は複数の置換をしたいとき使う
$ sed -e '1s/,/*/g' -e '3s/,/@/g' sample.txt a*b*c d,e,f g@h@i j,k,l2行目から4行目のコンマを*に置換
★連続している行なら
2,4s
のように書く$ sed '2,4s/,/*/g' sample.txt a,b,c d*e*f g*h*i j*k*lコマンドをスクリプトに書いておく方法
※ コンマをすべて*に置換してね!というコマンドを適当なファイルに書いておく
mysed.txts/,/*/g★ オプション f で上記のファイルを読み込み
$ sed -f mysed.txt sample.txt a*b*c d*e*f g*h*i j*k*l
- 投稿日:2021-03-05T21:44:32+09:00
Docker buildできない【echoコマンド】
前提
ホストOS:Windows(touchコマンドが使えない)
起こったこと
下記イメージを作ろうとしたところ…
DockerfileFROM ubuntu:latest RUN touch hoge$docker build .エラーがでました。
failed to solve with frontend dockerfile.v0: failed to create LLB definition: dockerfile parse error line 1: unknown instruction: ��F R O M原因
Dockerfileのファイルを作成する際に、
WindowsOSのためtouchコマンドが使えず、
新規ファイル作成の際、echoコマンドを使っていましたが、
その使い方がNGでした。具体的には下記がNG
echo "" > Dockerfile理屈は
①Dockerfileに空の文字列を挿入する。
②Dockerfileがないので空の新規ファイルが作られる。なんですが、echoコマンドで出力すると、デフォルトで出力文字の最後が改行されるようで
それが原因なのか微妙(入力して修正するので)ですが、
-nオプションをつけると解決しました。echo -n > Dockerfiledocker build .原因曖昧であれなのですが、、
とにかく、echo "" > Dockerfileという書き方は使わないようにします。
- 投稿日:2021-03-05T21:44:32+09:00
Docker buildできない際の原因【echoコマンド】
前提
ホストOS:Windows(touchコマンドが使えない)
起こったこと
下記イメージを作ろうとしたところ…
DockerfileFROM ubuntu:latest RUN touch hoge$docker build .エラーがでました。
failed to solve with frontend dockerfile.v0: failed to create LLB definition: dockerfile parse error line 1: unknown instruction: ��F R O M原因
Dockerfileのファイルを作成する際に、
WindowsOSのためtouchコマンドが使えず、
新規ファイル作成の際、echoコマンドを使っていましたが、
その使い方がNGでした。具体的には下記がNG
echo "" > Dockerfile理屈は
①Dockerfileに空の文字列を挿入する。
②Dockerfileがないので空の新規ファイルが作られる。なんですが、echoコマンドで出力すると、デフォルトで出力文字の最後が改行されるようで
それが原因なのか微妙(入力して修正するので)ですが、
-nオプションをつけると解決しました。echo -n > Dockerfiledocker build .原因曖昧であれなのですが、、
とにかく、echo "" > Dockerfileという書き方は使わないようにします。
- 投稿日:2021-03-05T12:53:50+09:00
Linux 〜もしスペース入れてファイル名やディレクトリ名を作ってしまった時の削除方法〜
初投稿!
学習記録やメモ書き目的で始めることにしました!
web開発をちょろっと学んでいましたが色々あって今はインフラ関連を中心に学習しております。ほぼ初学者レベルなので理解が浅いところや誤りがあるかと思いますがよろしくお願いします。またアドバイス等コメントいた抱けるとすっごく嬉しいです。
早く先輩方のお力になれるよう精進します。
では本題!もしスペース入れてファイル名やディレクトリ名を作ってしまったら・・・
これ、tarコマンドでディレクトリをアーカイブしていた時
「あ!スペース入れちまった!」って実際に私がやってしまったことです。スペース付きのファイル名なんて聞いたことないし、あったとしても絶対扱いづらい。まずそもそもそんなミス(?)を皆様しないと思いますが。
消そうと思っても普通に
#rm fi leなんてやってももちろん削除されません。そりゃ「fiファイル」と「leファイル」
って認識されるので当たり前ですね。削除の仕方!
#rm "fi le"これだけです!
ダブルクォーテーションで囲むだけ!””で囲ったら文字列として認識されちゃうのかな〜と思いながらもやってみたら出来ました。真相はわかりませんが、rmコマンド自体がファイルとディレクトリを対象としているから””で囲ってもファイル名などとして認識してくれるのですかね。
ちなみに
#rm "fi le"で削除出来たってことなので
#touch "fi le"でも「fi le」ファイルが作れますw
ちゃんとcatコマンドで「fi le」名として作られているか確認しました。いや、絶対使わなーーーい。
はい、以上!!
- 投稿日:2021-03-05T12:53:50+09:00
Linuxコマンド 〜もしスペース入れてファイル名やディレクトリ名を作ってしまった時の削除方法〜
初投稿!
学習記録やメモ書き目的で始めることにしました!
web開発をちょろっと学んでいましたが色々あって今はインフラ関連を中心に学習しております。ほぼ初学者レベルなので理解が浅いところや誤りがあるかと思いますがよろしくお願いします。またアドバイス等コメントいただけるとすっごく嬉しいです。
早く先輩方のお力になれるよう精進します。
では本題!もしスペース入れてファイル名やディレクトリ名を作ってしまったら・・・
これ、tarコマンドでディレクトリをアーカイブしていた時
「あ!スペース入れちまった!」って実際に私がやってしまったことです。スペース付きのファイル名なんて聞いたことないし、あったとしても絶対扱いづらい。まずそもそもそんなミス(?)を皆様しないと思いますが。
消そうと思っても普通に
#rm fi leなんてやってももちろん削除されません。そりゃ「fiファイル」と「leファイル」
って認識されるので当たり前ですね。削除の仕方!
#rm "fi le"これだけです!
ダブルクォーテーションで囲むだけ!””で囲ったら文字列として認識されちゃうのかな〜と思いながらもやってみたら出来ました。真相はわかりませんが、rmコマンド自体がファイルとディレクトリを対象としているから””で囲ってもファイル名などとして認識してくれるのですかね。
ちなみに
#rm "fi le"で削除出来たってことなので
#touch "fi le"でも「fi le」ファイルが作れますw
ちゃんとcatコマンドで「fi le」名として作られているか確認しました。いや、絶対使わなーーーい。
はい、以上!!
- 投稿日:2021-03-05T12:53:16+09:00
[ubuntu20.04]電源ボタンでPCをシャットダウン
- 投稿日:2021-03-05T09:03:16+09:00
macbookのrubyの環境構築
私が行なったrubyの開発に必要な環境構築についてまとめておきます。
今後自分も必要なことだと思うので。。デフォルトをzshに設定
% chsh -s /bin/zsh
% xcode-select --install
コマンドラインツールをインストールします。
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"ホームディレクトリにて、homebrewのインストールをします。
% brew -v % brew update
homebrewのバージョンを確認、updeateを上記の記述で行う
Rubyのインストール
% brew install rbenv ruby-build % echo 'eval "$(rbenv init -)"' >> ~/.zshrcrubyの土台となるものをhomebrewを用いてinstallする。
したの記述でpc上どこからでも使用できるようにする。% source ~/.zshrc
ここまででzshの変更を反映します。
% brew install readline % brew link readline --force
readlineをインストールしてirb上での日本語入力を可能に設定します。
% RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" % rbenv install 2.6.5 % rbenv global 2.6.5 % rbenv rehash % ruby -v上記を一つずつ実行します。
まずruby2.6.5のインストールをします。
インストールしたrubyを使用するためにバージョンを指定。
rbenvを読み込んで変更を反映。
最後の記述でインストールしたrubyのバージョンを確認する。Mysqlをインストールしていきます
% brew install mysql@5.6 % mkdir ~/Library/LaunchAgents % ln -sfv /usr/local/opt/mysql\@5.6/*.plist ~/Library/LaunchAgents % launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql\@5.6.plist
一つずつ実行します。
pc再起動のたびに起動し直さないように自動で起動するようにinstall以下の記述で設定します。% echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc % source ~/.zshrc % which mysql % mysql.server status以上の記述でどこからでも操作できるように設定します。
最後の記述でsqlの状態を確認できます。railsのインストール
% gem install bundler --version='2.1.4' % gem install rails --version='6.0.0' % rbenv rehash % rails -v
gemを管理するために必要なbundlerをインストールする。
rails6.0.0をインストールする
変更を反映させて正しく導入できているのかを確認。nodeのインストール
% brew install node@14 % echo 'export PATH="/usr/local/opt/node@14/bin:$PATH"' >> ~/.zshrc % source ~/.zshrc % node -vrailsを動かすのに必要なnode.jsのインストールをする。
yarn
% brew install yarn % yarn -v
主にJavaScriptで開発されたプログラム部品(モジュール)を管理するためのパッケージ管理システムの一つです。
以上が2020年3月現在私が環境構築で行なっている作業でした。
- 投稿日:2021-03-05T03:36:18+09:00
sudoの脆弱性対応メモ
sudoの脆弱性対応をしたのでいかに記述します。
■対象サーバー
CentOS6.5UPDATE前のsudoバージョン
[root@db01 ~]# rpm -qa sudo sudo-1.8.6p3-20.el6_7.x86_64デフォルトのyum updateだとこのバージョンが最新となる
[root@db01 ~]# yum update sudo 読み込んだプラグイン:fastestmirror, refresh-packagekit, security 更新処理の設定をしています Loading mirror speeds from cached hostfile base | 3.7 kB extras | 3.4 kB updates | 3.4 kB 更新と設定されたパッケージがありません。このバージョンだと脆弱性が解消されていない
[oracle@db01 ~]$ sudoedit -s / [sudo] password for oracle: sudoedit: /: 通常ファイルではありません参考URL)https://www.jpcert.or.jp/at/2021/at210005.html
参考サイトによると、上記コマンドを実行した際、「usage:~」と表示されれば脆弱性が解消されているsudoのバージョンで、
「sudoedit:~」と表示されたら脆弱性が解消されていないバージョンとの事。
- 投稿日:2021-03-05T03:36:18+09:00
sudoの脆弱性対応
2021年1月26日に発表されたsudoの脆弱性について対応した内容を以下に記述します。
■対象サーバー
CentOS6.5/etc/sudoersの権限設定内容は以下の通り
[root@db01 ~]# grep -A 2 '## Allow root' /etc/sudoers ## Allow root to run any commands anywhere root ALL=(ALL) ALL oracle ALL=(ALL) ALLUPDATE前のsudoバージョン
[root@db01 ~]# rpm -qa sudo sudo-1.8.6p3-20.el6_7.x86_64デフォルトのyum updateだとこのバージョンが最新となるが...
[root@db01 ~]# yum update sudo 読み込んだプラグイン:fastestmirror, refresh-packagekit, security 更新処理の設定をしています Loading mirror speeds from cached hostfile base | 3.7 kB extras | 3.4 kB updates | 3.4 kB 更新と設定されたパッケージがありません。このバージョンだと脆弱性が解消されていない
[oracle@db01 ~]$ sudoedit -s / [sudo] password for oracle: sudoedit: /: 通常ファイルではありません以下サイトによると、sudoのバージョンについて、上記コマンドを実行した際「usage:~」と表示されれば脆弱性が解消されており、「sudoedit:~」と表示されたら脆弱性が解消されていないとの事。
参考URL)https://www.jpcert.or.jp/at/2021/at210005.html
脆弱性対象バージョンは以下の通り。
- sudo バージョン 1.8.2 から 1.8.31p2
- sudo バージョン 1.9.0 から 1.9.5p1sudo公式サイトより脆弱性対応バージョンのsudoをダウンロードする
[root@db01 tmp]# wget https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3.el6.x86_64.rpm --2021-03-05 03:16:10-- https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3.el6.x86_64.rpm github.com をDNSに問いあわせています... 13.114.40.48 github.com|13.114.40.48|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://github-releases.githubusercontent.com/57972154/9bfacb80-5fc6-11eb-9a63-3f50d94d454f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210304%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210304T181610Z&X-Amz-Expires=300&X-Amz-Signature=ef43331dbb2d2e02e8b96691d691a0f4139e1452c987001a3d4c3a6ed5343254&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=57972154&response-content-disposition=attachment%3B%20filename%3Dsudo-1.9.5-3.el6.x86_64.rpm&response-content-type=application%2Foctet-stream [続く] --2021-03-05 03:16:10-- https://github-releases.githubusercontent.com/57972154/9bfacb80-5fc6-11eb-9a63-3f50d94d454f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210304%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210304T181610Z&X-Amz-Expires=300&X-Amz-Signature=ef43331dbb2d2e02e8b96691d691a0f4139e1452c987001a3d4c3a6ed5343254&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=57972154&response-content-disposition=attachment%3B%20filename%3Dsudo-1.9.5-3.el6.x86_64.rpm&response-content-type=application%2Foctet-stream github-releases.githubusercontent.com をDNSに問いあわせています... 185.199.108.154, 185.199.110.154, 185.199.109.154, ... github-releases.githubusercontent.com|185.199.108.154|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2235944 (2.1M) [application/octet-stream] `sudo-1.9.5-3.el6.x86_64.rpm.1' に保存中 100%[==========================================================================================>] 2,235,944 2.91M/s 時間 0.7s 2021-03-05 03:16:11 (2.91 MB/s) - `sudo-1.9.5-3.el6.x86_64.rpm.1' へ保存完了 [2235944/2235944]拡張子がrpm.1でダウンロードされたのでrpmにリネームする
[root@db01 tmp]# mv sudo-1.9.5-3.el6.x86_64.rpm.1 sudo-1.9.5-3.el6.x86_64.rpmインストールする
[root@db01 tmp]# yum install sudo-1.9.5-3.el6.x86_64.rpm 読み込んだプラグイン:fastestmirror, refresh-packagekit, security インストール処理の設定をしています sudo-1.9.5-3.el6.x86_64.rpm を調べています: sudo-1.9.5-3.el6.x86_64 次のリポジトリーへの更新として sudo-1.9.5-3.el6.x86_64.rpm を設定します: sudo-1.8.6p3-20.el6_7.x86_64 Loading mirror speeds from cached hostfile 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package sudo.x86_64 0:1.8.6p3-20.el6_7 will be 更新 ---> Package sudo.x86_64 0:1.9.5-3.el6 will be an update --> 依存性解決を終了しました。 依存性を解決しました ==================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ==================================================================================================================================== 更新: sudo x86_64 1.9.5-3.el6 /sudo-1.9.5-3.el6.x86_64 7.9 M トランザクションの要約 ==================================================================================================================================== アップグレード 1 パッケージ 合計容量: 7.9 M これでいいですか? [y/N]y パッケージをダウンロードしています: rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています 更新 : sudo-1.9.5-3.el6.x86_64 1/2 警告: /etc/sudoers は /etc/sudoers.rpmnew として作成されました。 整理中 : sudo-1.8.6p3-20.el6_7.x86_64 2/2 Verifying : sudo-1.9.5-3.el6.x86_64 1/2 Verifying : sudo-1.8.6p3-20.el6_7.x86_64 2/2 更新: sudo.x86_64 0:1.9.5-3.el6 完了しました!sudoが修正版のバージョンに更新されたことを確認
[root@db01 tmp]# rpm -qa sudo sudo-1.9.5-3.el6.x86_64確認コマンドを実行し、「usage:~」と表示されることを確認
[oracle@db01 ~]$ sudoedit -s / usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file ...これでsudo脆弱性対応は完了しました。