wheel - みる会図書館


検索対象: BSD hacks : プロが使うテクニック&ツール100選
24件見つかりました。

1. BSD hacks : プロが使うテクニック&ツール100選

HAC K # 63 512 Jan 22 12 : 37 bin/ 512 Jan 22 12 : 38 etc/ 512 Jan 22 12 : 37 lib/ 512 Jan 22 12 : 37 usr/ このスクリプトは、以下のようなディレクトリ構造を作成する。 chroot をテスト creating /usr/home/rembackup/incoming directory f0 て uploading files ls: /lib/libnss compat*: N0 such file or directory lnstall f0 て what username? backup /usr/home/rembackup/ enter the home directory you wish t0 set for this user: afterwards, it will chdir t0 incoming. when scponly chroots, it will only chroot t0 chroot path and set the home dir t0 / ( h て 00t path//incoming f0110WS : can specify this when you specify the user's home directory as automatically change t0 this incoming subdirectory upon login' you the scponly user can write int0. if you want the scponly user t0 f0 て this reason, an 'incoming" subdirectory will be created that cannot subvert the . ssh configuration parameters. by the scponly user. this is important so that the scponly user please note that the user' s home directory MUST NOT be writable Next we need t0 set the home directory for this scponly user. # . /setup chroot. sh # chown + x setup ( h て 00t. sh # cd wo て k / 5 ( ponly - 3.8 / 引 6 ー 6 章システムのセキュリティ # 15 -1 /usr/home/rembackup total 10 drwxr-xr-x 2 て 00t wheel drwxr-xr-x 2 root wheel drwxr-xr-x 2 backup wheel drwxr-xr-x 2 root wheel drwxr-xr-x 7 root wheel 512 Jan 22 12 : 38 incoming/ # 15 -1 /usr/home/rembackup/bin/ total 1868 -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x 1 て 00t 1 て 00t 1 て 00t 1 て 00t 1 root 1 root 1 root 1 て 00t 1 て 00t wheel wheel wheel wheel wheel wh eel wheel wheel wheel 88808 Jan 22 12 : 37 chmod* 14496 Jan 22 12 : 37 ech0* 72240 Jan 22 12 : 37 ln* 567772 Jan 22 12 : 37 ls* 73044 Jan 22 12 : 37 mkdir* 437684 Jan 22 12 : 37 mv* 80156 Jan 22 12 : 37 pwd* 439812 Jan 22 12 : 37 rm* 69060 Jan 22 12 : 37 rmdir*

2. BSD hacks : プロが使うテクニック&ツール100選

ユーザの設定をカスタマイズー さらに独自のファイルを追加することもできるだろう。 33 HACK # 9 マイズを行うこともできるし、 デフォルトファイル drwxr-xr X デフォルトではどんなファイルがあるかを眺めてみよう。 % 15 -1 /usr/share/skel total 24 2 root drwxr-xr-x 27 root 1 root 1 て 00t 1 root 1 て 00t 1 て 00t 1 root 1 root 1 root wh eel wh eel wheel wheel wheel wheel wheel wheel wheel wheel 512 JuI 28 16 : 09 . / 512 JuI 28 16 : 06 921 JuI 28 16 : 09 dot. cshrc 248 Ju1 28 16 : 09 dot. login 158 JuI 28 16 : 09 dot. login conf 371 Ju1 28 16 : 09 dot. mail aliases 331 Jul 28 16 : 09 d0t. mailrc JuI 28 16 : 09 dot. profile 276 JuI 28 16 : 09 dot. rhosts 975 Jul 28 16 : 09 d0t. shrc どのファイルも dot で始まることに注意してほしい。しかし、システムがユーザのホーム 797 ディレクトリにコピーするときには、 dot が文字どおりの " . " に置き換わる。また、このディ レクトリのファイルの所有者は root になっているが、新しいユーザを作成してホームディレ 分でハックしたバージョンの . cshrc に置き換えればよい。コピーするとき、ファイルの名前 でカスタマイズした . cshrc を新しいユーザに与えたければ、 /usr/share/skel/dot. cshrc を、自 # 2 ] tcsh シェルの便利な設定ファイルオプション」で、 . cshrc のハックを紹介した ) 。自分 それでは、デフォルトファイルを 1 っすっ説明する。ますは dot. cshrc から始める ( 「 [ Hack dOt. cshrc クトリにコピーするときには、所有者がそのユーザに置き換わる。 るが、カスタマイズしたコピーを別の場所に格納しておくほうが便利だろう。 . cshrc のコピーで上書きしている。直接に /usr/share/skel/dot. cshrc を編集することもでき この例では、デフォルトの dot. cshrc を、スーパーユーザがカスタマイズしたバージョンの # cp / て 00t /. ( sh /usr/share/skel/dot. cshrc を変更することを忘れないでほしい。 トリを持っているかどうかを調べる。手つ取り早く探すには、次のようにすればよい。 その方法がないわけではない。まず、どんなユーザが存在し、そのユーザがホームディレク すでにユーザが存在し、それらのユーザにカスタマイズしたファイルを与えたいとしたら、

3. BSD hacks : プロが使うテクニック&ツール100選

HAC K ー 267 # 55 F 「 eeBSD のアクセス制御リスト % getfacl acl-test #file:acl-test #owner: 1000 #group : 1000 user: :rw- user:nobody:rw- group :wheel : rw- mask: :rw- other: :r-- 、 other: : の各フィールドについては、説明するまでもないだろう。これら は、標準的な Un ⅸのパーミッションを単に ACL で表記したものだ。ただし、 nobody と wheel の行は目新しい。これらの行は、通常のパーミッション設定に加えて、特定のユーザとグルー プ ( この例では nobody ユーザと wheel グループ ) のパ ーミッションを指示している。 mask フィールドは最大のパーミッションを定める。したがって、あるユーザの靦 - パー ツ ションに r - - マスクを組み合わせると ( m : : r で設定 ) 、ト - パーミッションだけがユーザに与え られる。 user: ・ ACL の追加と削除 setfacl コマンドで、 ACL の追加、変更、削除を実行する。 chmod と同様、ファイルの所有 者またはスーパーユーザだけが setfacl コマンドを使用できる。 ACL を操作するには、この コマンドのオプションを少し扱うだけでよい。 始めに setfacl コマンドの構文を説明する。 getfacl の出力と全く同じ形式で、 ACL を指定 すればよい。例として、 acl-test の ACL を削除し、その後で再び設定してみる。 % setfacl -b acl-test % setfacl -m user:nobody:rw-,group:wheel:rw- acl-test - b オプションを使用すると、標準的なユーザ、グループ、その他の行を除くすべての ACL を削除する。 -m オプションを使用すると、 ACL の設定を、指定のエントリ ( またはカンマで 区切ったエントリ ) に置き換える。工ントリを省略することもできる。上記のエントリを、 u:nobody:rw-,g:wheel:rw- と略してもよい。 setfacl で通常のパーミッションを変更することもできる。 ACL のエントリに user::rw- と 指定することは、ファイルに対して ( hmod u = rw と実行することに等しい。 ACL の削除もほとんど同じだ。 setfacl -x u:nobody:rw-,g:wheel:rw- と実行すると、 ACL を 削除できる。また、 ACL をファイルで指定することも可能だ。 -M オプションと -X オプショ ンは、小文字のオプション ()m と (x) と同じ機能を果たすが、エントリを指定のファイルから

4. BSD hacks : プロが使うテクニック&ツール100選

HACK # 36 172 ー 4 章バックアップ # pax - 靦 /usr/bin/egrep /usr/bin/fgrep /usr/bin/grep /tmp/ # 15 -il /tmp/usr/bin/ 47 -r-xr-xr-x 3 root wheel 73784 Sep 8 2002 egrep 47 -r-xr-xr-x 3 て 00t wheel 73784 Sep 8 2002 fgrep 47 -r-xr-xr-x 3 て 00t wheel 73784 Sep 8 2002 grep これと同じことを、 cp -R で実現できるだろうか。いや、できない。その代わり、 3 つの新 しいファイルを作成し、それぞれに固有の i ノード番号が付き、リンクカウントが 1 になり、 tar: Removing leading 、 / ' from absolute path names in the archive だろう。 これまでに GNU tar を使用したことのある人は、次のようなメッセージを見たことがある ルートのアーカイプとバスの置換 47 -r-xr-xr-x 1 root wheel 73784 Dec 19 11 : 26 grep 48 -r-xr-xr-x 1 root wheel 73784 Dec 19 11 : 26 fgrep 49 -r-xr-xr-x 1 root wheel 73784 Dec 19 11 : 26 egrep # 15 -il /tmp/usr/bin/ # cp -R /usr/bin/egrep /usr/bin/fgrep /usr/bin/grep /tmp/usr/bin/ # rm /tmp/usr/bin/* 日時が新しくなってしまう。 の下にファイルを展開することができる。 展開するときにファイルシステムのルートディレクトリではなく、現在の作業ディレクトリ pax の置換引数を使用して、先頭の / を削除することができる。そうすれば、アーカイプを そして、システムにログインできなくなって驚くに違いない。 ファイルが入っていると、そのファイルが現在のパスワードファイルを上書きしてしまう。 トディレクトリの下にファイルを作成してしまう。例えば、そのアーカイプに /etc/passwd アーカイプを展開するときに現在の作業ディレクトリを無視して、ファイルシステムのルー 展開することが望ましい。ルートディレクトリの下をそのままアーカイプにすると、その アーカイプを展開するときには、安全のため、現在の作業ディレクトリの下にファイルを から、 GNU tar ユーティリティは、先頭の / を自動的に取り除く。 既存のファイルを、外部からのファイルで誤って上書きすることは好ましくない。その理由 つまり、すべてのファイル名が絶対パスになっており、スラッシュ ( / ) で始まっている場合だ。 このメッセージが出るのは、ルートディレクトリからの tar アーカイプを作成するときだ。 # pax -A - て - 5 ' く rootedarchive. tar

5. BSD hacks : プロが使うテクニック&ツール100選

IP フィルタのルールセットをスクリプトで切り替え 7688 Jan 22 12 : 37 id* -xr-x 1 0t wheel xr-x 1 Ot wheel xr-x 1 て 00t wheel # 15 -1 /usr/home/rembackup/usr/bin/ - rwxr -rwxr- -rwxr- 7016 Jan 22 12 : 37 chgrp* total 48 7688 Jan 22 12 : 37 groups* total 8 # 15 -1 /usr/home/rembackup/usr/sbin/ -rwxr-xr-x 1 root wheel 22616 Jan 22 12 : 37 scp* SSH セッションの間にアカウントが使用できるのは、上記のコマンドだけだ。 -rwxr-xr-x 1 root wheel 7016 Jan 22 12 : 37 chown* ー 317 HAC K # 64 また、指定のユーザアカウントが作られていることも確認するとよい。 backup アカウント 次のステップ の ( は chroot を設定していることを示す。 このアカウントが使用できるのは scponlyc シェルに限られることに注意してほしい。末尾 &:/usr/home/rembackup//incoming:/usr/local/sbin/scponlyc backup:*:1015:1015::0:0:User \ # grep backup /etc/master. passwd については、次のようにして調べる。 H A C K ・一一ファイアウォールのルールセットが常に 1 つだけでは不十分だ 旧フィルタのル - ルセットをスクリプトで切り替え scponly のホームページ (http://www.sublimation.org/scponly/) ・ man scponly 参照 リモートバックアップを自動化」と組み合わせてみるとよい。 この Hack を、「 [Hack#381 ネットワークを越えて安全にバックアップ」および日 Hack # 39 ] べースの認証を設定する必要がある。 トアップすることを忘れてはいけない。アカウントにパスワードを設定するか、または鍵 ーで、認証方式をセッ 制限付きのアカウントを設定し、 SSH スクリプトでテストした ファイアウォールの管理者は、 ルールセットを作成するために、少し独創的な才能が必要になることを知っているだろう。 ネットワークセキュリティの必要性を最大限に反映した

6. BSD hacks : プロが使うテクニック&ツール100選

HAC K # 2 8 ー 1 章ユーザ環境のカスタマイズ このようなプロンプトを設定すれば、自分が誰で、現在どこにいるかが、一目でわかるよ うになる。さらに、自分がどのマシンにログインしているかを知る必要があれば ( リモートマ シンを管理するときに便利 ) 、プロンプト文字列の中でまたは % m を使用すればよい。 スーバーユーザに切り替えると何が起こるか スーバーユーザの . cshrc ファイル ( スーバーユーザのホームディレクトリ /root にある ) にも、 同じくプロンプト文字列の設定がある。これは非常に幸運なことであり、 su コマンドでユーザ を切り替えたときに何が起こるかが明らかになる。たった今、ユーザ dru でログインし、次の ようなプロンプトが現れたとする。 dru@/usr/ports/net/ethereal : su を使用して「 oot ユーザに切り替えたとき、シェルの出力がどうなるかを注意深く観察してほ しい。 dru@/usr/ports/net/ethereal : su Password : dru@/usr/ports/net/ethereal : ここで whoami コマンドを実行すると、いっそう混乱するだろう。 dru@/usr/ports/net/ethereal : whoami dru しかし、 id コマンドは嘘をつかない。 dru@/usr/ports/net/ethereal : id uid=o(root) gid=o(wheel) groups=o(wheel), 5(operator) su を単純に実行しただけでは、スーバーユーザとしてログインできないことがわかる。スー バーユーザの権限は得られても、ログインシェルは元のままなのである。 本当にスーバーユーザとしてログインしたければ、ログインスイッチ ( -1 ) を付ければよい。 uid=o(root) gid=o(wheel) groups=o(wheel) , 5(operator) rootC : id root r00t@N: whoami Password : dru@/usr/ports/net/ethereal: su -1

7. BSD hacks : プロが使うテクニック&ツール100選

HACK # 35 168 ー 4 章バックアップ hie てと実行してマニュアルページを見てほしい。 #!/bin/sh # 以下の 4 つのディレクトリのバックアップをとるスクリプト tar cvvpzf b00t. tar. gz /b00t tar cvvpzf etc. tar. gz /etc tar cvvpzf home. tar. gz /home tar cvvpzf usr 10Ca1 etc. tar. gz /usr/local/etc このスクリプトは、最初の例として役立つだろう。 ta 「には使い方がたくさんあ る。 man 1 tar と実行し、マニュアルページを注意深く読んで、自分の必要性を 満たすようにスクリプトを調整してほしい。 tar: Removing leading / from absolute path names # . /bkup このスクリプトを実行してアーカイプを作成する。 # chmod 755 bkup このファイルを実行可能に設定する。 drwxr-xr-x root/wheel drwxr-xr-x root/wheel -r--r--r-- root/wheel -r--r--r-- root/wheel ( 省路 ) in the archive. 10957 May 11 19 : 46 2002 boot/defaults/loader. conf 512 Jun 23 18 : 19 2002 boot/mbr 0 May 11 19 : 46 2002 boot/defaults/ 0 Jun 23 18 : 19 2002 b00t/ カイプファイルができあがる。 # 15 ー more bkup b00t. tar. gz etc. tar. gz home. tar. gz usr 10 ( al etc. tar. gz 手作業でシェルスクリプトをテストし、その結果に満足したら、定期的に実行したい日時 を on スケジューラに追加すればよい。 重要なのはバックアップの実装方法ではなく、定期的にバックアップをとることだ。デー タの削除や破壊が「起こるかどうか」が問題なのではない。「いつ」起こるかが問題なのであ る。これが、適切なバックアップが重要な理由だ。 スクリプトの実行が終了すると、選んだディレクトリごとに、 *. tar. gz という名前のアー

8. BSD hacks : プロが使うテクニック&ツール100選

ファイルをフラク、で保護 % rm important file override rw-r--r-- dru/wheel uchg fo て important file? y rm: important file : 0peration not permitted % cp important file test ー 273 HACK # 56 mv および rm コマンドと cp コマンドとの間に、大きな違いがあることに注目してほしい。 mv と rm コマンドは元のファイル自体を変更するので、これらを変更不能フラグ ( uchg ) で防止で きる。一方 cp コマンドは、元のファイルを変更するのでなく、同じ内容の新しいファイルを 作成するにすぎない。ただし、新しいファイルに ls -10 を実行すると、 uchg フラグが設定さ れていないことがわかるだろう。これは、新しいファイルが、親ディレクトリからパー ションとフラグを引き継ぐからだ。 ( もちろん、これで話がすべて終了するわけではない。 もっと込み入った詳細については、 man umask と実行してマニュアルページを読んでほしい。 ) ディレクトリ内の変更の防止と解除 重要なファイルをすべて 1 つのディレクトリに置き、そのディレクトリに u ( hg フラグを再 帰的に設定すると、どうなるだろうか。 % mkdir important stu 幵 % cp resume important stu 幵 / % chflags -R important stu 幵 / % 15 -10 important stu 幵 / drwxr-xr-x 2 dru wheel uchg drwxr-xr-x 34 dru wheel 1 dru wheel uchg 512 Dec 1 11 : 23 . / 3072 Dec 1 11 : 36 14 Dec 1 11 : 13 resume こまでは問題ない。ファイル resume はディレクトリから uchg フラグを引き継いだので、 変更から保護されている。このディレクトリに新しいファイルを追加しようと試みると、何 が起こるだろうか。 % cp coverletter important stu 幵 cp : important stu 幵 /coverletter: 0peration not permitted ディレクトリ自体の変更を禁止しているので、このディレクトリ内のファイルを削除する ことも、変更することもできない。これが望みの動作なら、すばらしいことだ。しかし、望 みと違っているとしたら、ディレクトリにフラグを設定するときに注意しなければならない。 考えが変わり、本当にファイルを変更したくなったとしたら、どうすればよいだろうか。自 分がそのファイルを所有している場合、 no を付けて ( hflags コマンドを繰り返すことにより、 フラグを解除できる。例えば次のように実行する。

9. BSD hacks : プロが使うテクニック&ツール100選

HACK 269 # 55 F 「 eeBSD のアクセス制御リスト test-acl-list Properties General SecuritY N ame dannyboy XPEE\dannyboy) 0 Everyone 0 0 wheel CKPEE\wheel) Add.. R emove 凵 nprivileged u 記「 IXPE E \nobodlrll PermiSSlons: Full Control Modify 日 d & Execute 日 ead Write Deny ロロロロロ ロロロ回回 Adyanced.. AIIOW inberitable permssions 行 orn parentto propagate to this obiect 亠一 図 6-2 Samba クライアントから FreeBSD の ACL を操作 # cd /usr/ports/net/samba # make -DWITH ACL SUPPORT install clean Samba のポート設定ダイアログを開くと、図 6-1 に示すように、 ACL が使用可能になって いることがわかるだろう。 Samba を立ち上げて動かしたら、 ACL を使用可能に設定したファイルシステムで共有ファ イルを探す。ファイルの上でマウスの右ボタンをクリックし、 [ プロバティ (properties)] を 選ぶと、図 6-2 のようなウインドウが現れる。 [ セキュリティ (Security) ] タブに移ると、ま るでファイルが Wrndows サーバにあるかのように、 ACL の参照や変更を実施できる。 Samba に ACL がないという理由で、 Windows サーバから Samba に移行することをためらっ ていた人は、ファイルサーバに Samba と FreeBSD を実装することを本気で検討し始めると よい。

10. BSD hacks : プロが使うテクニック&ツール100選

移植性の高い POS Ⅸアーカイブを作成ー 171 は使えないことがある。例えば、ソースコードの数が非常に多いと、コマンドライン上にファ イルの一覧を並べきれすに、次のように表示される。 % tar cf kirksrc. tar $(find /home/kirk -name /bin/ksh: tar: Argument list t00 long 一方、多くの場合、パイプを使用すれば期待どおりに働く。 パイプの 2 段階目で、 pax は標準入力からファイルの一覧を読み、アーカイプを標準出力に 書き出す。あらゆる BSD に入っている pax には、 gzip を扱う機能が組み込まれている。した がって、この段階で -z 引数を追加すれば、アーカイプを圧縮することができる。 ァーカイプを作成するとき、詳細表示の - v ( verbose の意味 ) 引数を付けないで pax を起動す るほうがよい。そうすれば、エラーが発生したとき、膨大な出力の中に pax のエラーメッセー ジが埋もれてしまうことはない。 3 段階目でアーカイプの圧縮と暗号化の一方または両方を実施する。 pax ユーティリティは パイプからデータを読むので、中間の tar アーカイプは必要ない。この例では、 pgp(Pretty GoodPrivacy ) 暗号化システムを使用している。このユーティリティは ports コレクションに ある。 属性を保存してコビー POSIX では、 2 つのユーティリティを使用して、ファイルの階層構造をコピーすることが できる。 cp -R と pax - 靦だ。一般ユーザにとっては ( p - R が標準的な方法だ。しかし、管理 者であるならば、 pax - 靦を使用したほうが、ハードリンクのカウントやファイルのアクセス 時刻など、元のファイルの属性を保存できる。さらに、 pax - 靦のほうが、元のファイル階層 を上手にコピーできる。 例として、 3 つの実行可能プログラムをバックアップしてみる。 egrep 、 fgrep 、 grep はすべ て、同じ実行可能プログラムへのハードリンクになっている。リンクカウントは 3 であり、 i ノード番号はすべて同じだ。 ls -li と実行すると、最初のカラムに i ノード番号を、 3 番目の カラムにリンクカウントを表示する。 # 15 -il /usr/bin/egrep /usr/bin/fgrep /usr/bin/grep 31888 -r-xr-xr-x 3 て 00t wheel 73784 Sep 8 2002 /usr/bin/egrep 31888 -r-xr-xr-x 3 root wheel 73784 Sep 8 2002 /usr/bin/fgrep 31888 -r-xr-xr-x 3 て 00t wheel 73784 Sep 8 2002 /usr/bin/grep pax - 靦を使用し、元のファイルと同じ日時を保存して実行可能プログラムを作成してみる。 HACK # 36