20211129のLinuxに関する記事は13件です。

学習のお題

※調査することになった理由 umaskでなんで、_bashrcが実行されないのかわからなかった。 原因判明:bashrcがログインシェルの場合、はじいている。。。 shopt -q login_shell だからif文処理に入らないんだ。。多分。 ※.bash_profileは実行されているように見えるのに。 ※.bash_profileには、.bashrcがあれば実行するという記載があるのに。。。 ソースコードを追いかけているがさっぱりわかんない。 どうもインタラクティブシェルとログインシェルという概念があるみたい。 まずは手元の環境から整理します。 SSH接続の結果 ログインシェル かつ インタラクティブシェル shopt login_shell login_shell on echo $- himBH GUI接続の結果 ノンログインシェル かつ インタラクティブシェル shopt login_shell login_shell off echo $- himBH 仮説だが、ログインシェルの場合、.bashrcはなぜか実行されない。。。 原因不明。 GUIのノンログインシェルの場合は実行されているのを確認。 ログインシェル→bashコマンドでノンログインモードに変更しても.bashrcが実行されることは確認しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

インタラクティブシェルとログインシェル

※調査することになった理由 umaskでなんで、_bashrcが実行されないのかわからなかった。 原因判明:bashrcがログインシェルの場合、はじいている。。。 shopt -q login_shell だからif文処理に入らないんだ。。多分。 ※.bash_profileは実行されているように見えるのに。 ※.bash_profileには、.bashrcがあれば実行するという記載があるのに。。。 ソースコードを追いかけているがさっぱりわかんない。 どうもインタラクティブシェルとログインシェルという概念があるみたい。 まずは手元の環境から整理します。 SSH接続の結果 ログインシェル かつ インタラクティブシェル shopt login_shell login_shell on echo $- himBH GUI接続の結果 ノンログインシェル かつ インタラクティブシェル shopt login_shell login_shell off echo $- himBH 仮説だが、ログインシェルの場合、.bashrcはなぜか実行されない。。。 原因不明。 GUIのノンログインシェルの場合は実行されているのを確認。 ログインシェル→bashコマンドでノンログインモードに変更しても.bashrcが実行されることは確認しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux入門 2-2 数値計算

はじめに Linux初学者である自分向け用の記事です。Udemyの動画講座を参考にしました。 僕の勉強法は動画を見る→実際に動かしてみる→問題演習という流れです。 前回まで:Linux入門 2-1 2. シェルスクリプト(問題、テスト、演習、発展問題) 2-5. 数値計算 [test@... basic]$ cat base9.sh #!/bin/bash echo 1 + 1 echo $(( 1 + 1 )) echo $(( 10 / 6 )) echo ------------- num1=10 num2=20 echo $(( num1 + num2 )) [test@... basic]$ ./base9.sh 1 + 1 2 1 ------------- 30 割り算に関してはint型で処理されるため、小数点以下は表示されない。 変数を使うときは$を使わない。(つまり、以下のようにしないこと) #!/bin/bash num1=1 num=2 echo $(( $num1 + $num2 )) 2-6. 関数 なお、小数点以下の計算にはbcコマンドをインストールする必要がある。 bcコマンドは、小雨数店以下の数値を扱うだけでなく、四則演算・平方根・三角関数などさまざまな関数の計算を実施できる。 //rootユーザーにてインストールを実施 [root@ ~]# yum install bc Loaded plugins: fastestmirror, ovl ... 以下にて、関数などを使用した計算を実施する。 ファイルの権限だが、.shファイルを実施できるように実行権限を付与する。 //変更前 [test@d45c56c52f45 basic]$ ls -la -rw-rw-r-- 1 test test 31 Nov 20 07:24 base10.sh //変更後 [test@d45c56c52f45 basic]$ chmod 755 base10.sh [test@d45c56c52f45 basic]$ ls -la -rwxr-xr-x 1 test test 31 Nov 20 07:24 base10.sh ファイルの中身と実行結果 [test@ basic]$ cat base10.sh #!/bin/bash echo "20.5+5" | bc echo "scale=10;2/3" | bc -l echo "scale=5;sqrt(18/2)" | bc -l [test@ basic]$ ./base10.sh 25.5 .6666666666 3.00000 bcコマンドを使いたいときは、echo "20.5+5" | bcのように|でつないで実行したいコマンドを記載すればよい。 ちなみに、|は標準出力の結果を右のコマンドに渡すの意味。 2-7. Case文、ループ文(for, while, until) case case文とは、ある変数の値を評価して、値に応じて処理を変える。 ex1) ファイルの中身 [test@ basic]$ ./base11.sh red STOP [test@ basic]$ cat base11.sh #!/bin/bash var=$1 case $var in 'blue') echo 'GO';; 'red') echo 'STOP';; 'yellow') echo 'waiting...';; esac 実行結果 [test@d45c56c52f45 basic]$ ./base11.sh red STOP [test@d45c56c52f45 basic]$ ./base11.sh yellow waiting... ex2) ファイルの中身 [test@d45c56c52f45 basic]$ cat base11b.sh #!/bin/bash var=$1 case $var in [a-z]) echo 'a-z';; [A-Z]) echo 'A-Z';; [0-9]) echo '0-9';; esac 実行結果 [test@ basic]$ ./base11b.sh S A-Z [test@ basic]$ ./base11b.sh m a-z [test@ basic]$ ./base11b.sh 2 0-9 while ex)文字の場合 ファイルの中身 [test@ basic]$ cat base12.sh #!/bin/bash #while read -p 'input : ' var while [ $var != 'exit' ]; do echo 'input_is_' $var echo 'Please Write exit' read -p 'input : ' var done 実行結果 [test@ basic]$ ./base12.sh input : udemy input_is_ udemy Please Write exit input : aaa input_is_ aaa Please Write exit input : exit ex)数値の場合 ファイルの中身 [test@ basic]$ cat base12-i.sh #!/bin/bash #while int n=0 while (( $n < 5 )); do echo $n echo 'Please wait seconds...' sleep 1 n=$(( n + 1 )) done exit 0 実行結果 [test@ basic]$ ./base12-i.sh 0 Please wait seconds... 1 Please wait seconds... 2 Please wait seconds... 3 Please wait seconds... 4 Please wait seconds... 数値でwhile文を使うときはwhile (( $n < 5 ));と記述する。 sleep関数を入れると、出力まで時間をdelayすることができる。 break ファイルの中身 [test@ basic]$ cat base12-b.sh #!/bin/bash #while int n=0 while (( $n < 5 )); do echo $n echo 'Please wait seconds...' sleep 1 if [ $n -eq 2 ]; then break fi n=$(( n + 1 )) done exit 0 実行結果 [test@ basic]$ ./base12-b.sh 0 Please wait seconds... 1 Please wait seconds... 2 Please wait seconds... continue ファイルの中身 [test@ basic]$ cat base12-b.sh #!/bin/bash #while int n=0 while (( $n < 5 )); do echo $n echo 'Please wait seconds...' sleep 1 if [ $n -eq 2 ]; then continue fi n=$(( n + 1 )) done exit 0 実行結果 [test@ basic]$ ./base12-b.sh 0 Please wait seconds... 1 Please wait seconds... 2 Please wait seconds... 2 Please wait seconds... 2 Please wait seconds... 2 Please wait seconds... 2 Please wait seconds... ^C ファイルからの読み込み 読み込み用のファイルを作成 [test@ basic]$ cat sample.txt 1 2 3 4 5 ファイルの中身 [test@ basic]$ cat base13.sh #!/bin/bash cat 'sample.txt' | while read txt; do echo $txt sleep 0.5 done exit 0 実行結果 [test@ basic]$ ./base13.sh 1 2 3 4 5 for文 2つ飛ばしでカウントしていく場合。 ファイルの中身 [test@ basic]$ cat base14.sh #!/bin/bash for i in `seq 1 2 10` do echo $i sleep 0.5 done 実行結果 [test@ basic]$ ./base14.sh 1 3 5 7 9 コマンドを実行する場合。 ファイルの中身 [test@d45c56c52f45 basic]$ cat base14c.sh #!/bin/bash for cmd in ls pwd date do echo $cmd $cmd done 実行結果 [test@ basic]$ ./base14c.sh ls base10.sh base11b.sh base12-i.sh base13.sh base14c.sh sample.txt base11.sh base12-b.sh base12.sh base14.sh base9.sh pwd /home/test/basic date Sat Nov 20 08:47:41 UTC 2021 ShellScriptのテスト2 Q1)数値の計算結果を変数に格納するさいの記載方法を次の中から選択してください A1) var=$(( 1 + 1 )) 計算結果を表すには$(( 計算 ))、もしくは$(expr 計算)です。 Q2)bcを用いた浮動小数点の計算方法について正しいものを選択してください A2) echo '1 + 1.5' | bc bcの場合echoで標準出力の計算式を受け取ることで計算を実行します Q3)case文の記載方法で正しいものを選択してください A3) var=$1 case $var in 'blue') echo 'GO';; esac case文の正しい記載方法です Q4)while (( $var < 10 ))のとき、varの値がどの値のときwhileの中の処理が実行されるでしょうか? A4) 9 Q5)以下のスクリプトは何と表示されるでしょうか #!/bin/bash for i in `seq 1 10` do if [ $i -eq 3 ]; then continue elif [ $i -eq 8 ]; then break fi echo $i done A5) 1 2 4 5 6 7 3がcontinue飛ばされ、8でループを抜けるため、1 2 4 5 6 7が表示されます 演習問題 Q)Fizz Buzz問題 ・1-100までループする ・数値が3の倍数のときは数値:Fizzと表示 ・数値が5の倍数のときは数値:Buzzと表示 ・数値が15の倍数のときは数値:FizzBuzzと表示 ・上の条件を満たさないときは数値のみを表示 ・forを利用して作成する。 A) [test@d45c56c52f45 3]$ cat for.sh #!/bin/bash for i in `seq 1 1 100`; do if [ $(( i % 3 )) -eq 0 ] && [ $(( i % 5 )) -eq 0 ]; then echo $i 'FizzBuzz' elif [ $(( i % 3 )) -eq 0 ]; then echo $i 'Fizz' elif [ $(( i % 5 )) -eq 0 ]; then echo $i 'FizzBuzz' else echo $i fi done exit 0 select文 ファイルの中身 [test@ basic]$ cat base15.sh #!/bin/bash select var in apple banana lemon exit do if [ -z $var ]; then continue fi echo $var if [ $var = 'exit' ]; then break fi done echo 'select end' 実行結果 [test@ basic]$ ./base15.sh 1) apple 2) banana 3) lemon 4) exit #? 3 lemon #? 4 exit select end To Be Continued... [Linux入門 2-3] [Linux入門 2-3]:
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ユーザ作成の自動化

ユーザ作成の自動化 ※ユーザー名と同じ名前でユーザを作成します。 ※初回ログイン時にパスワード変更を求めます。 使い方 sh user_add.sh ユーザ名 user_add.sh #!/bin/sh if [ $# -ne 2 ] then #標準出力を標準エラー出力に変更。まぁ好み次第で不要でもOK。 echo "パラメータがユーザ名とグループ名でない" >&2 exit 100 fi USER_PASS=$1 GROUP_INFO=$2 grep ${GROUP_INFO} /etc/group if [ $? -ne 0 ] then groupadd ${GROUP_INFO} fi useradd ${USER_PASS} -g ${GROUP_INFO} echo ${USER_PASS} | passwd --stdin ${USER_PASS} passwd -e ${USER_PASS}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

umaskの設定について

umask設定についてよくわからなかったので調査 結論から umaskの値をデフォルトから変更したい場合は 「/etc/profile」と「/etc/bashrc」両方のumask値を変更する必要あります!! ※SSHログイン時に/etc/bashrcは実行されない。 ※原因はわかりました。shopt -q login_shell .bashrcに記載があった。 こんなコマンドわかんねぇーって飛ばしていたらこいつだった。 俺いつも読み飛ばしたものが犯人だったこと多数。この性格治らないかなぁ。。。 コンソールログインとsshログインの時にbash実行方法が異なっていることがわかりました。 詳しくは https://qiita.com/ikkyu193/items/5c9a87b22fdf7697422e わかりやすいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自作Cコンパイラ neo-c2 version 2.0.1リリースです。termuxでvinクローンがコンパイルできなかったので修正してます

タイトル通りです。 あとはオリジナルヒープシステムのコードはコンパイルエラーが出るようにしました。 互換性なくなりましたね。すみません。 あとはAlpine LinuxとiSHですかね。動かしたいの。iSHで動けばAlpine Linuxも動きそうですけど。 ちょっとiSHでコンパイルかけてみます
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bash起動に関して

わかりやすい説明があったので https://blog1.mammb.com/entry/2019/12/01/090000#%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%A8%E3%81%AF なんで以下の順番でプロファイルを読み込んでいるのかわからなかった。。。 気になって調べてみた。 bashコマンドのソースに記載があった。 version:4.2 SYS_PROFILEは、「/etc/profile」のこと shell.c /* Execute /etc/profile and one of the personal login shell initialization files. */ if (no_profile == 0) { maybe_execute_file (SYS_PROFILE, 1); if (act_like_sh) /* sh */ maybe_execute_file ("~/.profile", 1); else if ((maybe_execute_file ("~/.bash_profile", 1) == 0) && (maybe_execute_file ("~/.bash_login", 1) == 0)) /* bash */ maybe_execute_file ("~/.profile", 1); } sourced_login = 1; } pathnames.h /* The default login shell startup file. */ #define SYS_PROFILE "/etc/profile" #この「SYS_PROFILE」が「/etc/profile」のこと #宣言は、 Redhatでログインして、psコマンドを実行すると、bashだけが実行されている。 なのでbash関連のファイルが読み込まれている。 OS上で「~.profile」を作成しただけでは、bashがまた起動された。 仕方ないので「/etc/passwd」のシェルの部分を変更した。 そうしたら「.profile」が読まれた。 ということは、ユーザがログインする際に、/etc/passwdをチェックしているんだなぁということが わかった。 誰が犯人なんだろうって思って調査開始。 よくよく考えてみたら Redhatのログインを制御しているのってsystemdだと仮定して再調査 /etc/passwdから以下のファイルを読んでいることがわかった。 version:systemd 219 util.c if (shell) *shell = p->pw_shell; return 0; } systemdが、ログイン時に「/etc/passwd」ファイルを読み込んで ユーザのシェル情報を取得している。 それをもってシェル設定を行っている模様。。。。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

大きいサイズのファイルを分割、合成

大きいサイズのファイルを分割 tar czvf - <圧縮したいファイル> | split -b 70m(70メガで分割) - <分割後のファイル名> tar czvf - big-file | split -b 70m - big-file.tar.gz 上記で分割したファイルを元のサイズに合成する cat * | tar xzvf -
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

データを活かしたままZFSプールサイズを拡張する

はじめに ZFSには保存済みデータに影響なくプールサイズ(パーティションサイズ)を拡張する機能が用意されていて、autoexpandプロパティを設定して拡張できます。これを実際に操作してみます。 ここでは1台のディスク内でプールサイズを20GBから30GBに拡張します。 テスト環境 以下のテストは手元の実験用サーバーで、内蔵120GBのSSDの前半(60GB程)にWindowsがインストールしてあるものを使いました。 ディスクはGPTでパーティション管理を行なっていて、FreeBSDのデータ用に20GB確保しました。パーティションインデックスは 6 です。 $ gpart show ada0 => 34 250069613 ada0 GPT (119G) 34 2014 - free - (1.0M) 2048 102400 1 ms-basic-data (50M) 104448 121270272 2 ms-basic-data (58G) 121374720 204800 3 efi (100M) 121579520 1300480 4 ms-recovery (635M) 122880000 16777216 5 freebsd-swap (8.0G) 139657216 41943040 6 freebsd-zfs (20G) 181600256 68469391 - free - (33G) GPTのパーティション名を確認すると次の通りで、work0 と設定してあります。 $ gpart show -l ada0 => 34 250069613 ada0 GPT (119G) 34 2014 - free - (1.0M) 2048 102400 1 (null) (50M) 104448 121270272 2 (null) (58G) 121374720 204800 3 (null) (100M) 121579520 1300480 4 (null) (635M) 122880000 16777216 5 swap0 (8.0G) 139657216 41943040 6 work0 (20G) 181600256 68469391 - free - (33G) ZFSプールはすでに作成済で、zpool list -v zworkを見ると次の通りgpt/work0を使った20GBのプールがあることがわかります。 $ zpool list -v zwork NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zwork 19.5G 1.24G 18.3G - - 0% 6% 1.00x ONLINE - gpt/work0 19.5G 1.24G 18.3G - - 0% 6.33% - ONLINE このZFSプールを30GBに変更します。 パーティションの拡張 まずディスクパーティションのサイズ変更を行います。gpart resizeを使ってパーティションサイズを20GBから30GBに拡張します。 $ gpart resize -i 6 -s 30g ada0 ada0p6 resized $ gpart show ada0 => 34 250069613 ada0 GPT (119G) 34 2014 - free - (1.0M) 2048 102400 1 ms-basic-data (50M) 104448 121270272 2 ms-basic-data (58G) 121374720 204800 3 efi (100M) 121579520 1300480 4 ms-recovery (635M) 122880000 16777216 5 freebsd-swap (8.0G) 139657216 62914560 6 freebsd-zfs (30G) 202571776 47497871 - free - (23G) この通りパーティションは拡張できました。次にZFSプールの操作になりますが、今の段階ではまだ20GBのままです。 $ zpool list -v zwork NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zwork 19.5G 1.24G 18.3G - - 0% 6% 1.00x ONLINE - gpt/work0 19.5G 1.24G 18.3G - - 0% 6.33% - ONLINE autoexpandプロパティをonに設定しても、それだけではプールサイズは変わりません。 $ zpool set autoexpand=on zwork $ zpool list -v zwork NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zwork 19.5G 1.24G 18.3G - - 0% 6% 1.00x ONLINE - gpt/work0 19.5G 1.24G 18.3G - - 0% 6.33% - ONLINE 実際に拡張するためには、zpool online -e を使用します。 $ zpool online -e zwork gpt/work0 $ zpool list -v zwork NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zwork 29.5G 1.24G 28.3G - - 0% 4% 1.00x ONLINE - gpt/work0 29.5G 1.24G 28.3G - - 0% 4.18% - ONLINE このとおり zwork は、30GBになりました。 autoexpandプロパティによる自動でのプールサイズの拡張 ここでは実験としてautoexpandプロパティを設定して1台のディスクの中でパーティションサイズの変更を行ったわけですが、実際の使用例としては、すでに使用しているミラーやRAID構成のZFSの容量のディスク交換による容量の拡張でしょう。 たとえば2TBのディスクを2台ミラー構成で使っていて残容量が少なくなって4TBのディスクに交換する場合、次の手順で既存のデータを活かしたままプールサイズの拡張ができます。 プールのautoexpandプロパティをonに設定する ミラー構成の片方を4TBのものと交換する1 ミラーの同期を待つ。なお同期が完了してもこの時点では片側が2TBであるためプールの容量は変わりません。もちろん同期を待つ間もデータの読み書きはできます。 残りの2TBのものを4TBに交換する。 ミラーの同期が完了すると、4TBのプールに自動的に拡張される RAID-Zの構成であっても、同様に1台づつディスクを交換することで、全体の容量を増やすことができます。 まとめ 以上の通りで、ZFSではストレージ容量の拡張も比較的簡単に操作できるようになっています。ディスクのホットスワップをサポートしているハードウェアであれば、サーバーは無停止でディスクの拡張ができます。 Linuxの場合 ここではFreeBSDで説明しましたが、LinuxでもUbuntuでは標準でZFSをサポートしていますし、ZFS on Linuxを利用すると他のLinuxディストリビューションでもZFSが利用できます。 Linuxの場合での操作方法ですが、本記事と内容は変わりません。ディスクのパーティション操作についてはFreeBSDとLinuxによる差異がありますが、ZFS部分の機能と操作はまったく同じものとなります。 ミラーの場合は一旦zpool detachで1台を外し、attachを使って新たなディスクを追加します。壊れた場合やRAID-Zでは(offlineと)replaceを使うことになります。「ZFSのRAIDZの修復とついでに拡張する」が参考になるでしょう。 ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【virtualbox】ホストOSからゲストOSへのhttp通信

ホストOSからゲストOSに接続できない。 ホストOSからゲストOSにhttp通信を行おうとした際に接続できない事象が発生した。 接続できない大きな原因として ①ゲストOSのファイアウォールが80番ポートが開いているか ②ポートフォワーディングにhttp通信を設定しているか ③ゲストOSのIPアドレスが正しいか 上記、3点の原因を理解した上でそれぞれの確認を行っていく。 ※ホストOSのブラウザからゲストOSの接続は最後に行う。 まず、大抵の原因であろう1番から確認していく。 ①ゲストOSのファイアウォールが80番ポートが開いているかの確認方法 ゲストOSの端末を開く。 最初にファイアフォールのサービスが起動しているかを確認。 下記コマンドを実行し、activeだった場合はサービス起動中であることを確認。 firewalld確認 systemctl status firewalld.service ※もし、サービス起動中でない場合は、下記コマンドを実行し、ファイアフォールのサービスを起動させる。 firewalld起動 systemctl start firewalld.service 次に本題である。下記コマンドを実行し、80番ポート(http)が開いているかを確認する。 80番ポート確認 firewall-cmd --list-all 実行すると、下記の内容がでてくる。 firewall詳細 public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: dhcpv6-client http ssh ports: 443/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 「services」にhttpがあれば、80番ポートの通信が許可されていることがわかる。 もし、許可されていない場合には、下記コマンドを実行し80番ポートの通信を設定する。 http通信を許可する firewall-cmd --add-service=http --zone=public --permanent これで、もう一度「firewall-cmd --list-all」を実行し、80番ポート(http)が設定されていることを確かめる。 確認できたら、次に進む。 ②ポートフォワーディングにhttp通信を設定しているかの確認方法 ※ポートフォワーディングとは。。? →特定のポートからの通信を、特定のポートの通信に自動的に転送すること。 virtualboxのウィンドウから 「設定」-「ネットワーク」-「高度」-「ポートフォワーディング」を開く。 下記の図の、右側の「+」ボタンを押下し、HTTPのように設定する。 ホストポートに関しては、ウェルノウンポートでなければなんでもよい。今回は「5000」を設定。 以上で、ポートフォワーディングの設定は完了。 ②ゲストOSのIPアドレスが正しいかの確認方法 ゲストOSのIPアドレスを確認するためには、ゲストOSの端末で、下記コマンドを実行 IPアドレス確認 ip addr 確認できたら、早速ホストOSからゲストOSにhttp接続を行ってみる。 ホストOSのブラウザで下記を実行する。 http://[③で確認したゲストOSのIPアドレス]:[②で設定したホストポート]/ 下記画面が表示されたら、ゲストOSにhttp通信できていることを確認。 今回は以上となります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

2021年のオープンソース界隈の話題がわかる!OSSコンプラニュース一気振り返り

こんにちは! 知財系 もっと Advent Calendar 2021の8日目は、 昨年に続いての登場のENDOです。 2日連続名古屋からの発信ですね♪ 自己紹介と本日のテーマについて 今年も本業は新サービスの企画やシステム開発のマネジメントでしたが、 引き続きソフトウエアプロジェクトの98%が使用しているというオープンソースソフトウエア(OSS)周りの知財関連活動にも取り組み、 昨年の記事で紹介したLinux FoundationのOpenChainプロジェクトにおける標準化や オープンソースの啓発活動の他、日本知的財産協会の講習会の講師やパネラー、知財管理誌への寄稿などを行いました。 そこで、本日は今年のOSSライセンスコンプライアンス(OSSに付与されているライセンスを遵守するための活動、詳しくは昨年の記事ご参照)に関する主要ニュースをピックアップしてご紹介します。 ここではそれぞれのニュースを極々簡単にご紹介しますが、 OpenChain Japan Advent Calendar 2021では専門家が、 各ニュースをより詳細に解説していく予定ですので、知財系Advent Calendar共々よろしくお願いします! では、早速やっていきましょう! 経産省「オープンソースソフトウェアの利活用及びそのセキュリティ確保に向けた管理手法に関する事例集」 https://www.meti.go.jp/press/2021/04/20210421001/20210421001.html この事例集はサイバー・フィジカル・セキュリティ確保に向けたソフトウェア管理手法等検討タスクフォースによって4月にリリースされたもので、 企業におけるOSS管理の参考にして頂くために、ソニーやNTT、デンソー等様々な企業の取組事例が紹介されています。 ここで注目すべきはOpenChainやSPDXなどライセンスコンプライアンス関係のプロジェクトに関する記載が多いことです。 これは、ライセンスの管理もセキュリティの管理も、ソフトウエア透過性(自分たちが使っているソフトウエアを特定すること)が重要になってきており、 そのような文脈でライセンス・セキュリティの業務がオーバーラップしてきていることを明示しています。 私も微力ながらこの事例集の作成に協力させて頂いた関係で、Linux Foundationからインタビューを受けました。 出典:https://www.meti.go.jp/press/2021/04/20210421001/20210421001-1.pdf 米国「国家のサイバーセキュリティ改善に関する大統領令」 https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/ 5月12日にバイデン大統領が署名した標記の大統領令ですが、これもセキュリティ関係のニュースながらOSSコンプラ界隈で注目を浴びました。 大統領令の中の「ソフトウェアのサプライチェーンセキュリティの強化」の中で「購入者へのSBOMの提供」が要求されたからです。 SBOMとはSoftware Bill of Material(ソフトウエアの部品表)を指し、製品に組み込まれているソフトウエアのリストのことを指します。 このSBOMはライセンスコンプライアンスを効率化する上でも非常に重要なもので、 特にサプライチェーンの中での情報共有のためにはとても有用なものです。 Linux FoundationでもSPDXというSBOMのフォーマットを提案しており、この大統領令はSBOM普及のための追い風になると言われています。 出典:https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/ SPDX仕様が「ISO/IEC 5962:2021」に https://www.linuxfoundation.org/featured/spdx-becomes-internationally-recognized-standard-for-software-bill-of-materials/ 大統領令でSBOMが脚光を浴びる中、9月にSPDX仕様2.2がISO/IEC 5962:2021国際規格化されました。 このISO/IEC 5962:2021にはOpenChain Japan WGにて策定したエクセルで管理可能な簡易バージョンであるSPDX Liteもプロファイルの一つとして登録されています。 これにより、皆が同じフォーマットを使うことで組織間のソフトウエア情報の共有が効率化し、ライセンスコンプライアンスも楽になることが期待されます。 SBOMのフォーマットにはSPDXの他にも、SWID(ISO/IEC 19770-2:2015)やCycloneDXといったものが存在します。 出典:https://www.iso.org/standard/81870.html! 東京都オープン・ソース・ソフトウエア公開ガイドライン https://github.com/Tokyo-Metro-Gov/tokyo-oss-guideline オープンソースの世界は利用と貢献が車輪の両輪のようになっており、より戦略にOSSを活用するためには組織としても貢献を加速するための取組が必要であり、そのような活動を行う社内組織OSPO(Open Source Program Office)の設置が欧米中企業中心に進んでいますが、日本は道半ばという状況です。 そんな中、10月下旬に東京都が「東京都新型コロナウイルス対策サイト」の経験を活かして、貢献のためのガイドラインを公開しました。 公開の背景や意義についてはcode for Japan関さんのnote記事をご参照ください。 本件については、私も微力ながら公開前にβ版の編集にご協力させて頂きました。 今年は東京パラリンピックにもField Castとして参加させて頂き、地元東京のために少しでも貢献できたことは良い思い出になりました。 出典:https://github.com/Tokyo-Metro-Gov/tokyo-oss-guideline/blob/main/README.md TRUTH Socialに関するSFCの指摘 https://sfconservancy.org/blog/2021/oct/21/trump-group-agplv3/ これも10月下旬の出来事です。Software Freedom ConservancyのBradley KuhnさんがTrump Media and Technology Groupが立ち上げたソーシャルメディア「TRUTH Social」が「Mastodon」のライセンスAGPLv3に違反するのではないかと指摘するブログを投稿し、世界的な話題となりました。 本記事投稿時点でそれ以上の情報はなく、事実関係やその後の展開は不明です。 とこんなところでしょうか。 来年も何かしら発信させて頂ければと思います。 少し早いですが、メリークリスマス!良いお年を!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

続OSSスキル標準について Open Source Skill Standard

こんにちは! 昨日に続いて登場の遠藤です。 本日は、昨年も紹介したOSSスキル標準に関する紹介を再度させてください。 昨日も紹介した通り、コンプライアンスやセキュリティの観点からもOSS管理の重要性が日増しに増大しており、企業の取り組み内容を共有しようという動きもひろがっています。 また、OpenChainにおいても企業が適切にOSSを管理するためのプロセスの標準の普及や、 教育資料の作成、プラクティスの共有なども進んでいます。 OSSスキル標準の必要性と新たな展開 一方で、OSS管理の業務はソフトウエア開発部門、セキュリティ部門、法務・知財部門など様々な部門が 関わる複雑な業務であり、比較的新しい業務であるため、 各業務を誰(またはどの部署)が担当するべきか、各担当者をどのように育成していくべきかの指針が 必要とされていました。 もう一つのトレンドとして、ここでも「セキュリティ・ツールWeek」が開催されているように、 コンプライアンス業務やセキュリティ業務の共通部分が多いことから、 スキル標準もコンプライアンスに限らずOSSマネジメント全般を取り扱おうということになりました。 また、スキル標準の策定経験がある業界団体等の皆さんとの連携も模索しています。 表:OSSマネジメントスキル標準のカバー業務 仕切り直しにあたって そこでスキル標準策定チームでは、標準の規模の拡大に対応するために新たなメンバーを募集しています。 先ほども記載しましたように、OSS管理は様々な部門の方に必要とされているので、どんなバックグラウンドの方でも大歓迎ですし、これを機にOSSのことを勉強したいというかたも是非ご参加いただきたいと考えています。 活動は毎週月曜日の夜に2時間程度ウェブ会議を行っている他は、各自が宿題をやったり、 たまに関係する皆様と打ち合わせを行うようなイメージです。 これもオープンソースコミュニティ活動なので基本的には全てがオープン、且つ、無償の活動になります。 もし、参加されたいという方がいらっしゃる場合は、ここのコメント欄に記入頂くか、 OpenChainのML/Slack等で遠藤までご連絡頂ければと思います! English Summary Hi! Today I’d like to introduce the latest situation of “OSS Skill Standard”. As I introduced yesterday, the importance of OSS management is increasing day by day from the perspective of compliance and security. OSS management operations are carried out by various departments such as software development department, security department, legal and intellectual property department, etc. Because it is a complicated operation involved and it is a relatively new operation guidance on who should be in charge of each task and how to train each person in charge is needed. Because there are many common parts in compliance work and security work, recently, we decided to handle OSS-related matters in general from limited to compliance. Therefore, the skill standard development team is looking for new members to respond to the expansion of the standard. Any background is welcome. If you would like to study OSS, please join us. The activity is a web conference for about 2 hours every Monday night. This is also an open source community activity, so basically everything is open and free of charge. If anyone wants to participate, please fill in the comments here or Please contact me via OpenChain's ML or Slack!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

経産省のOSS管理手法事例集について About METI's Case Study of Open Source Management Methods

こんにちは! 2回目の登場の遠藤です。 本日からセキュリティ・ツールWeekです! 本日から「セキュリティ・ツールWeek」と称して7日間、OpenChainのセキュリティ関連の取組の紹介や、 OSSコンプラのツール関係トピックを取り上げていきます。 OpenChainは元々、ライセンスコンプライアンスにフォーカスを当てたプロジェクトですが、 サプライチェーン内でのソフトウエア透過性の向上や自社が使用しているOSSの見える化などの課題は セキュリティ対応の課題と共通することから、セキュリティ関連の取組も拡大してきています。 事例集策定の経緯と内容について 本日は、2021年4月21日に経済産業省からリリースされた 「オープンソースソフトウェアの利活用及びそのセキュリティ確保に向けた管理手法に関する事例集」について紹介させてください。 この事例集はサイバー・フィジカル・セキュリティ確保に向けたソフトウェア管理手法等検討タスクフォースによってリリースされたもので、企業におけるOSS管理の参考にして頂くために、様々な企業の取組事例が紹介されています。 このタスクフォースはソフトウエアの透過性を担保(自社の使っているソフトの中身を明確化)するために SBOM(ソフトウエア部品表)に着目し、企業がSBOMを適切に取りまわすことを支援する活動を行っています。 これはライセンスコンプライアンスと共通の課題のため、セキュリティに関する事例集ではありますが、OpenChainやSPDXに関する記載も多くみられます。 ソニーや日立製作所などOpenChainのプラチナメンバーの事例の他、デンソー、NTT、サイボウズなど様々な会社の事例が紹介されています。 私も微力ながらこの事例集の作成に協力頂いた関係で、Linux Foundationからインタビューを受けました。 出典:https://www.meti.go.jp/press/2021/04/20210421001/20210421001.html その後の展開 この事例集は秋に英語版もリリースされ、 これからも事例がどんどん追加されていく予定ですので、 他社のOSS管理の状況を知りたいという方は是非是非チェックしてみてください!! 出典:https://www.meti.go.jp/press/2021/04/20210421001/20210421001-1.pdf English Summary Hi! I’m Masato ENDO. From today, “Security and Tool week” is started. OpenChain focuses on open source license compliance at first. Because issues are similar to license compliance, OpenChain activities are expanding to security related activities also. In this April, Ministry of Economy, Trade and Industry in Japan released “Collection of Use Case Examples Regarding Management Methods for Utilizing Open Source Software and Ensuring Its Security” This document show 15 companies’ OSS management practices. And, many companies mentioned to OpenChain and SPDX. Because I also supported this document, I took an interview from The Linux Foundation. Please check it!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む