ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2017年3月3日金曜日

WindowsホストのファイルシステムをVirtualbox guest Linuxからフルアクセス

WindowsホストのファイルシステムをVirtualbox guest Linuxからフルアクセスですが、
いくつかの方法があります。


  1. VirtualBoxの共有機能をつかう
  2. LinuxにSambaを動かしマウントする
  3. NFSをつかう(双方可能)
  4. Windows共有をつかう

1.は属性が実行属性がついたり問題が多いので、4をつかってみる。
2.はいままでの過去投稿にあります。

1.Windows側の共有フォルダを設定します。
通常のWindows同士のファイル共有とおなじです。
エクスプローラ上で共有したいフォルダで右クリックメニューでプロパティ(例では「ユーザフォルダ」ですが良い例ではありません
 「共有」タブへ
 「共有名(H)」の名前の先頭に「$」をつける(とネットワークの上から見えなくなるので良し)
 「アクセス許可(P)」
 「Everyone」は「削除」
 自身のユーザ名を追加
 ないと以下の画面に(「場所」-「検索」で探せます)
 ユーザ名(画像はhogeでなく「Users」になってるけど)
 「アクセス許可」を「フルコントロール」に(Usersは自分のアカウント名に読み替えてください)
 「OK」、「OK」・・・でおしまい

2.ゲストLinux側
samba クライアントがない場合はインストールしてください。
例:
[CentOS]
yum install samba-client samba-winbind cifs-utils
[Ubuntu, debian系]
sudo apt-get install cifs-utils


3.ゲストLinux側
マウントポイントディレクトリを作成し/etc/fstabへ以下の行を追加

//172.16.99.9/$users /mnt/win cifs username=*****,password=*****,uid=1000,gid=1000,file_mode=0666,dir_mode=0777 0 0

(1行です)
172.16~

***

/mnt/win
は任意に変えてください。

172.16~
は、Windowsホストのネットワークアダプタ「VirtualBox Host-Only Network」に割り当てられているIPアドレスです。



以上でおk







2016年2月5日金曜日

/boot の不要ファイル削除

apt-get install
で/boot パーティションがいっぱいで失敗してしまったときの対処。


■ /bootパーティションの不要なパッケージを削除する。

$ dpkg --get-selections | grep linux-image
linux-image-3.19.0-25-generic          install
linux-image-3.19.0-26-generic          install
linux-image-3.19.0-28-generic          install
linux-image-3.19.0-31-generic          install
linux-image-3.19.0-32-generic          install
linux-image-3.19.0-33-generic          install
linux-image-3.19.0-37-generic          install
:
とある。
$ uname -a
Linux tkdvubn2 3.19.0-37-generic #42~14.04.1-Ubuntu SMP Mon Nov 23 15:13:51 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
と表示される。

■ linux-image-3.19.0-37-generic 以外は不要なので削除する。

$ for x in `dpkg --get-selections | grep linux-image-3.19. | cut -f 1`; do
  if [ '37' != ${x:19:2} ]; then
  sudo apt-get -y remove $x;
 fi;
done

とする(改行しても、一気に改行なしで続けても可)

■ 最後に、
$ sudo apt-get -y autoremove
:

これでよし

2015年5月1日金曜日

削除ファイルのバックアップ




ソースコードは、Gistにあげました

バックアップでリアルタイム同期のままでは、誤って削除されたファイルまで同期して失われてしまう。
ということで削除されたファイルをバックアップするように cronからスケジュール実行するPythonバックアップスクリプトを作成した。

masterディレクトリ  リアルタイム同期される(現状の状態そのものを表す)
weeklyディレクトリ 毎週1回masterの内容と同期される
deleteディレクトリ  毎晩1回weeklyにあってmasterに存在しない(消された)ファイルを保持する

rmbkup.py master weekly delete

この構文で、masterになくweeklyにあるファイルはdeleteにバックアップされる。
毎週1回のバックアップ前におこなう必要があります。(master=weeklyだとなにもおきませんので)

rmbkup.py master delete

この構文では、delete にあり、master に存在するファイルを削除する。即ち、復活されたファイルはバックアップの必要がないので削除する。この構文は週次バックアップの後に週1回おこなう。


2015年4月10日金曜日

opensslで暗号化

# 公開鍵と秘密鍵を作成(セキュアな場所:自身のホームディレクトリとかでおこなう)

$ openssl req -x509 -nodes -newkey rsa:2048 -keyout private_key.pem -out pubkey.pem -subj '/'

ここで作成された秘密鍵(private_key.pem)は門外不出にすること(復号に必要)。
公開鍵は(pubkey.pem)ばらまいてよい(暗号に必要)


# 公開鍵で暗号化テスト(ファイルtest.binを暗号化してtest.bin.encを作る)

$ openssl smime -encrypt -aes256 -in test.bin -binary -outform DEM -out test.bin.enc pubkey.pem


# 復号(秘密鍵使用)テスト

$ openssl smime -decrypt -in test.bin.enc -binary -inform DEM -inkey private_key.pem -out test.bin



以上。

公開鍵暗号方式は共通鍵方式に比べ一般の人にはわかりづらいようですが、簡単な考え方として、公開鍵は南京錠そのもので、秘密鍵は南京錠を開く鍵と例えると解り易いかと思います。
即ち大事なものを鍵をかけて送ってもらうには南京錠を開いたまま相手に渡し、鍵をロックして送ってもらう。それを解けるのは自分だけとなります。

(追記)
と思ったら、巨大のファイルはやっぱりダメなので以下の構文で暗号/復号する方がいいかな。
鍵は別系統で渡せばよいし。

暗号(file.txtをfile.txt.encへ)
$ openssl enc -e -aes-256-cbc -in file.txt -out file.txt.enc -kfile passphrase.dat

復号(file.txt.encをout.txtへ)
$ openssl enc -d -aes-256-cbc -in file.txt.enc -out out.txt -kfile passphrase.dat

passphrase.dat は、256文字以上の適当な文字列(鍵)

ソースコード閲覧用HTML作成ツール global

は、便利だが、いつも使う前に調べる。

gtags -vw
htags -sanovw
で、OK

Unix(Linux) Tipsいろいろ

階層下の.git以外のCソースとヘッダ群


find . -name '.git' -prune -o -type f -name '*.c' -o -name '*.h'

※ここでは何故か最後に-printをつけると.hしか表示されず、.cのみ表示される
が、.gitが表示されてしまう。(唯一のディレクトリ)
最後のprintを除くと何故か.gitだけは表示される(その下の.git下のディレクトリ群は表示されないが)

find . -name '.git' -prune -o -type f \( -name '*.c' -o -name '*.h' \) -print
とするとうまくいった。

使用例:

#!/bin/bash

for file in `find . -name "*.c* *.h" -type f`
do
echo $file
expand -t8 ${file} > ${file}.$$ && mv -f ${file}.$$ ${file} || rm -f ${file}.$$
done


回数ループをシェルスクリプトで 


seq 1 9

for i in `seq 1 9`
do
  echo $i
done


階層下ファイルの一括置換

xargs sed -i 's/BEFOR_STRING/REPLACE_STRING/g'

これを応用し、
find . -name '.git' -prune -o -type f \( -name '*.c' -o -name '*.h' \) -print | xargs sed -i 's/\r$//'
として、改行コードをWinからUnixへ変える

gccでカバレッジ

gcc --coverage
オプション付けてコンパイルリンク

実行
(cutterでもよし)

$ lcov -c -d . -o xxx.info
$ genhtml xxx.info

以上
何回も実行すると累積されていく。