読者です 読者をやめる 読者になる 読者になる

それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

tar ball から指定したファイルだけを、指定したファイル名・標準出力に取出すには

linux tar

tar ball を渡されて困る。

毎回毎回展開するのダルいんだよ。欲しいファイルや見たいファイルは一つだけ、もしくは複数ファイルだったりする

tar tvzf で中身を見る

tar で中身を見るには tvf ・ tvzf を使う z は gzip

tar tvzf test.tgz
drwxr-xr-x takuya/staff      0 2016-07-25 19:59 テスト/
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト1
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト2
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト3
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト4
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト5
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト6
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト7
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト8
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト9

指定したファイルを取出す

tar  x -f test.tgz 'テスト/テスト1' 

この方法で取出すことが一般的であると思う。でも、この方法ではファイルだけでなく、フォルダ構造も再現さしてくれる。ファイルだけ中身を見たい時にちょっと不便だと思う。

指定したファイルを取出す。標準出力へ。

指定したファイルを取出す。

tar  x -f test.tgz 'テスト/テスト1'  -O

tar には -O というオプションが合って、コレを使えば、指定したファイルを標準出力に取り出すことが出来る。マジか便利だ。

指定したファイルに取出す

ディレクトリ構造を作られるのがめんどうなので、標準出力をリダイレクトすることで、指定したファイルに取出すことが出来る。

tar  x -f test.tgz 'テスト/テスト1.jpg'  -O out.jpg

これで、tar ファイルの取扱が数段楽ちんになる。

ファイルの中身をみて、その結果をパパッ取り出せるなら、イチイチ展開してcd てたどっていくの面倒だし、作業用ディレクトリを作るの面倒なんだよね。

寸感

参考資料にあるように GNU tar での動作を確認しています。

私は、GPL信者なのでGNU tarを利用しているので、コレで動かすことが出来ました。

BSDのtar のman を見ても出来るようなので、大丈夫でしょう

っていうか tar ってgnu tar 以外にあるんだろうか。。。

参考資料

https://www.gnu.org/software/tar/manual/html_node/Writing-to-Standard-Output.html

http://www.freebsd.org/cgi/man.cgi?tar(1)

find コマンドで所有者やグループが条件マッチするファイルを探す

linux

指定ディレクトリの下に、オーナがオカシイファイルが出来る

php などWEBアプリが、ownerをちゃんと設定してくれなかったり、グループを設定してくれなかったり。

また、crontab がroot で動いていて消せないファイルが出来たり。

もちろん、ソースコードを直すのが先決。

ソースコードを直すのが先決だし、ディレクトリにStickyBitやSGIDを立てるのがより推奨されるけれど。

できちゃったファイルを探すには

すでに作成されたファイルを探すにはどうするか。

ファイルが既に作られちゃったのを探すには、find コマンドを使うのが便利

指定したグループになってるファイルを列挙する

find ./ -group root

あるユーザーになっているファイルを探すにな

ファイルのownerがユーザーになっているファイルを探すには。

find ./ -user root

あとは xargs と組み合わせて

chmod するなり、chown するなり、rm するなり。

また、ディレクトリを探す、ファイルを探すと組み合わせて戦う

参考資料

man find

ユーザをグループに追加・削除する gpasswd 編

linux

ユーザーをグループに追加したり削除するには

  • usermod
  • gpasswd
  • vigr

の3種類のコマンドが有ります。

何方を憶えるべきか、何方を使うべきか。迷うところですね。

今回は gpasswd を使ったユーザーの管理をまとめておくことにします。

gpasswd の使い方

gpasswd コマンドでユーザのグループ所属を変えることが出来ます。

ユーザーをグループに追加するには

gpasswd -a  takuya www-data

グループからユーザーを除外する

gpasswd -d takuya www-data

オプション -d で指定ユーザを削除します。

gpasswd が有利なポイント

gpasswd GROUP -a username

オプションの引数にユーザー名を入れる点。これでミスが減りやすいし、グループに対して◯◯すると明確なので、ユーザーのプライマリグループをウッカリ変えてしまうことがなくて助かります。

gpasswd コマンドを使うメリット

gpasswd コマンドは、引数(グループ・ユーザー)の区別が明確でミスが少ない。オペミスすると即死する系では非常に友好的に使えるはず

usermod を覚えておくメリット

gpasswd があるなら usermod いらないよね?ってそんなこともない。

gpasswd は GNU/Linuxに存在するコマンドですね。macOS XBSD のようなシステムには存在しない。

より汎用的なのは usermod だといえます。*1

またusermod は user に関するあれこれを変更できるので、使う機会が多いです。まとめてメモに残して覚えやすいですね。

Linuxしか使わねーよって人であればソレでも良いかもしれませんが。。。。

関連資料

usermod を使った場合はこちら。

Linuxユーザーをグループに追加する方法(追記:まとめて複数グループに追加 - それマグで!

*1:* 手元のOSXには入ってませんでした