2020年4月23日木曜日

SASフォルダの認証の設定値を確認

SAS Management Consoleから、SASフォルダに認証を設定するのは良くあることです。これで面倒なのが再鑑で値を確かめるのがGUIでポチポチ叩いて画面ショットを取ることです。

そんなときには、以下のツールを使って設定値をテキストに落とせば簡単、比較もしやすいです。設定値のエビデンス取得、SASフォルダやオブジェクトの設定確認に使えます。

Batch Tool: sas-show-metadata-access


もうひとつ別な方法として、%MDSECDS があります。
これはメタデータオブジェクトと権限をデータセットに出力してくれますが、明示的な設定と継承が混じるために厳密な設定確認にならない恐れがあります。

2020年4月20日月曜日

備忘: RHELのサブスクリプション手順

RHELのサブスクリプションの手順を短く書きます。私がアホなのか、たまにしかやらない手順だからなのか、1年に一回ぐらい手間取ります。こういう短い簡潔な手順があると役立つのではないか?

1. Red Hat Customer Portalにユーザ登録します。名称が「Red Hat Enterprise Linux開発者プログラム」かもしれません。

2. サブスクリプションしたいマシンにrootでログイン

3. subscription-manager remove で登録状況を掃除

4. subscription-manager clean で登録状況を掃除

5. subscription-manager registerで登録します。このとき指定するユーザ名はProfile>My ActivityのUsernameです。私はメールアドレスを打ち込んで何度も失敗しました。

6. 「このシステムは、次のIDで登録されました: ...」 が表示されることを確認してから

7. subscription-manager list --available でプールIDを表示します。プールIDはRed Hat Customer Portalにログインしてサブスクリプションの利用状況からでも確認できます。

8. subscription-manager subscribe --pool=**** でプールIDを指定してサブスクライブ

9. 「サブスクリプションが正しく割り当てられました」がでたらOK

2020年4月6日月曜日

LOCKDOWNで指定できるディレクトリを制限

セキュリティに関心のある人向けの投稿です。サーバクライアントの構成で、フォルダのアクセス制限をする方法を調べていたら、ありました。だいぶ昔、2014年の記事 ”Fencing in your SAS users with LOCKDOWN” なので、長いこと気が付いていなかった。

悪意あるユーザが、コードタスクでディレクトリのパスを探索すると、他の人、他の部署に見せたくないものが見えてしまう可能性があります。これを防止する手段が、LOCKDOWN システムオプションです。設定の方法は、前述の記事を参照してください。許可されていないディレクトリにLIBNAMEを割り当てようとすると、どのようなエラーが起きるか示します。

Workspaceサーバのディレクトリにある設定ファイルをいじって、LOCKDOWNのオプションと許可するパスを設定します。

3つのパターンでLIBNAMEを割り当てます。1つ目が、許可されていないディレクトリ、2つ目が許可したディレクトリ、3つ目が許可されていないディレクトリのサブディレクトリです。

 これを実行すると、1つ目がエラーになります。検索に引っ掛かるようにエラーメッセージをタイプしておきます。この投稿を書いている時点では、日本語のエラーメッセージはヒットしません。ERROR: SAS がロックダウン状態の場合、パスc:\tempはアクセス可能なパスのリストに含まれません。

このLOCKDOWNオプションで物理パスの指定を守り、アクセス権をより強固に縛るには、Metadata-Bound Libraries を使えとのことです。これを実運用で使っているところを知らないけど、単に私が無知なだけなのか?同僚に聞いてみよう。

2020年3月30日月曜日

PROC HTTP コロナウィルスのデータ

Webページに掲載されているCSVファイルを読み込むサンプルです。PROC HTTPを使って、コロナウィルスのデータCSVを読み込んでいます。 エラー”SSL Error: Invalid subject name”の対応として、オプションを設定していますが、これはProblem Note 64218に情報があります。
filename myfile "/var/tmp/total_cases.csv";
options set=SSL_USE_SNI=1;
options set=SSL_SNI_HOSTNAME="covid.ourworldindata.org";

proc http
 url="https://covid.ourworldindata.org/data/ecdc/total_cases.csv"
 method="GET"
 out=myfile;
run;

proc import out=work.total_cases
 datafile=myfile dbms=csv replace;
 getnames=yes;
 datarow=2;
 guessingrows=200;
run;


2019年10月15日火曜日

NFS vers=3で障害

トラブル対応のメモです。
某システムで、データセットにパスワード掛かって開けないという問合せありました。現地入りして調べると、%includeすらエラーを起こしていることが分かりました。strace
エラーを起こしている箇所を探すと、システムコールのfcntl(2) で、リードロックで失敗しています。

リードロックでということは、ファイル、ファイルの属性がらみということで、マウントしているファイルシステムを調べると、NFSのバージョンがそこだけ3になっていました。他のNFSマウントは4なのに。

手動でサービス止めて、umount, mountを行うとバージョンは4に変わり、無事にデータセットが読めるようになりました。ちなみに環境はAWSで、fstab(5)に書かれている情報では、特にバージョン指定もありませんでした。気まぐれ??

こういった謎の障害のときに、strace(8)が使えると便利です。DNSサーバーの応答が遅いとか分かったりします。


2019年8月8日木曜日

牛乳パックで作るダイスタワー

ちょいと子供の自由研究ネタで、ダイスタワーを作ることになりました。確率の実験のちょっとした小道具として使うためです。で、ネットで探したものを3つほど試したのですが、もう少し作りやすくしたい。そんなこんなで改良して、作りやすいと思う方法をまとめました。心がけたのは以下の点です。

  • 工作しやすい
  • ダイスが転がり落ちる傾斜の角度を調整、固定しやすい
  • 加工するサイズが分かる
  • サイコロが回転しながら落ちる
  • ダイスタワーから転がりでる
  • ラッピングしやすい

必要なのは1Lの牛乳パックと、工作用のボール紙、カッター、定規、ホチキスです。


牛乳パックは、カッターで正面と背面の一部を切り取ります。
 サイコロが転がり落ちる傾斜の板をボール紙で作ります。両側の1.5cmの部分は、傾斜をホチキスで固定するために必要です。
折り目を軽くカッターでなぞってから曲げます。


切り欠きから傾斜A,Bを差し込んでホチキスで止めます。このとき、傾きを調整しながら止めてください。
難しかったところをメモしておきます。
傾斜や切り欠きのサイズが適当でないと、サイコロがタワーの出口で引っ掛かってしまいます。上の設計だと16㎜のダイスですんなり通ります。あと、傾斜の板はある程度弾力があるボール紙が良いです。試作で光沢紙を傾斜板に使いましたが、サイコロが弾まずストン滑り落ちて、ランダムになっているのか不安でした。

話はサイコロにズレますが、サイコロにドリルで穴開けして中身を確認すると、何個か気泡を含んでいるものがありました。何個かは重心に偏りがあるサイコロがあるわけです。これで実験すれば微妙に、偏った結果がでるかもしれません。でも回数を重ねれば、大数の法則で数字に表れてくるはず。

このダイスタワー、作ってみると、カラカラとサイコロが落ちる音は心地よくて、なんどもサイコロを振ってました。紙工作なんていうのは、何十年ぶりでちょっと新鮮でした。

参考にした”他の作り方”のリンクを載せておきます。先人の知恵に感謝です。
ボードゲームは、いつも turn the tide. >【3作目】 ダイスタワーを自作しました。 【スタンダード】
http://turnthetide.blog.fc2.com/blog-entry-411.html

石膏粉末工房 > ダウンロード
http://sekkoufunmatsu.web.fc2.com/

彬兄のブロマガ > 牛乳パックで作るダイスタワー

2019年4月10日水曜日

複数のファイルをINFILEで読み込むときに、最初の見出しだけを読む

見出しが1行目含まれているファイルを複数読み込むと、見出し行がデータとして入ってきます。これを読み飛ばすサンプルです。探すのに時間が掛かったので、メモしておきます。

INFILE '/sas/data/input/test*.csv'
    LRECL=904
    ENCODING="SHIFT-JIS"
    TERMSTR=CRLF
    MISSOVER
    DSD
    FIRSTOBS=2  /* 2行目から読む */
    EOV=EOV  /* 入力ファイルの切替わりを検出する変数 */
;

input @;   /* 何も読み込まない */
if eov then input; /* 見出しの行を読み捨てる */
eov=0;