computer/linux
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*ユーザー管理 [#h802ff66]
**ユーザーの追加 [useradd] [#jbb8b666]
#highlighter(){{
$ sudo useradd -h
使い方: useradd [オプション] LOGIN
useradd -D
useradd -D [オプション]
オプション:
-b, --base-dir BASE_DIR 新アカウントのホームディクトリの
ベースディレクトリ
-c, --comment COMMENT 新アカウントの GECOS フィールド
-d, --home-dir HOME_DIR 新アカウントのホームディレクトリ
-D, --defaults useradd のデフォルト設定を表示または変更
-e, --expiredate EXPIRE_DATE 新アカウントの期限切れ日付
-f, --inactive INACTIVE 新アカウントのパスワード無効化日数
-g, --gid GROUP 新アカウントの主グループの名前または ID
-G, --groups GROUPS 新アカウントの補助グループのリスト
-h, --help このヘルプを表示して終了する
-k, --skel SKEL_DIR 雛型ディレクトリに指定のものを使う
-K, --key KEY=VALUE /etc/login.defs のデフォルトより優先される
-l, --no-log-init ユーザを lastlog, faillog のデータベースに
追加しない
-m, --create-home ユーザのホームディレクトリを作成する
-M, --no-create-home ユーザのホームディレクトリを作成しない
-N, --no-user-group ユーザと同名のグループを作成しない
-o, --non-unique UID が同じユーザの作成を許す
-p, --password PASSWORD 新アカウントの暗号化されたパスワード
-r, --system システムアカウントを作成します
-R, --root CHROOT_DIR chroot するディレクトリ
-s, --shell SHELL 新アカウントのログインシェル
-u, --iud UID 新アカウントのユーザ ID
-U, --user-group ユーザと同じ名前のグループを作成する
-Z, --selinux-user SEUSER SELinux のユーザマッピングに指定した
SEUSER を使う
}}
**ユーザの削除 [userdel] [#bf3e8f46]
#highlighter(){{
$ sudo userdel -h
使い方: userdel [オプション] LOGIN
オプション:
-f, --force 当該ユーザの所有でないファイルも削除する
-h, --help このヘルプを表示して終了する
-r, --remove ホームディレクトリとメールスプールを削除する
-R, --root CHROOT_DIR chroot するディレクトリ
-Z, --selinux-user このユーザの SELinux ユーザマッピングを
全て削除する
}}
**ユーザー一覧 [#j9252ace]
/etc/passwd
#highlighter(){{
・・・
onot:x:1000:1000:onot,,,:/home/onot:/bin/bash
・・・
}}
onot: user name
x: It means password, but "x" is shown in recent system.
1000: User ID
1000: Group ID
Blank columns are arbitrary comments, but users should not change directly.
home/<user name>: It is home directory of each user. If there is not the directory, "/" becomes default directory.
/bin/bash: Default shell setting
** [#l6d660fd]
*tcshrc [#j8a1061d]
t
source ~/.cshrc
source /opt/intel/Compiler/11.1/069/bin/ifortvars.csh intel64
set path=(/usr/local/comsol43b/bin $path)
alias ls 'ls --color=tty'
alias emacs 'emacs -nw'
alias sumire 'ssh onot@172.29.0.219'
alias azisai 'ssh ono@172.29.0.235'
alias scf020 'ssh onot@10.34.83.20'
alias scf023 'ssh onot@10.34.83.23'
*samba [#hb31a7d0]
sambaのinstall
$ sudo apt-get install samba
ユーザ作成/パスワード変更
$ sudo smbpasswd -a onot
ユーザ削除
$ sudo smbpasswd -x onot
ディレクトリの共有
/etc/samba/smb.conf
&color(#ff0000){末尾に追加};
#highlighter(){{
[onot]
path = /home/onot
writable = yes
}}
samba再起動
$ sudo /etc/init.d/samba restart
*intel Compiler(ver 11, 2013とか) [#i5696363]
解答の後インストール。
$ tar zxvf l_fcompxe_2013_sp1.3.174.tgz
cd l_fcompxe_2013_sp1.3.174
$ sudo ./install.sh
下記エラーを表示することがある。
libstdc++ (libstdc++6 を含む)
glibc
libgcc
[[ここ:http://packages.debian.org/stable/base/libstdc++5]]からamd64用とi386用の両方をダウンロードしてくる。
そしてまず、64bit用の方はdpkgをつかってインストールする。
#ref(libstdc++5_3.3.6-28_amd64.deb)
#ref(libstdc++5_3.3.6-28_i386.deb)
$ sudo sudo dpkg -i libstdc++5_3.3.6-28_amd64.deb
32bit用のファイルは、以上インストールだと望みの場所にインストールしてくれないので、パッケージからファイルを取り出してインストールする。まず、
$ sudo dpkg --extract libstdc++5_3.3.6-18_i386.deb ./
で解凍する。
$ cd usr/lib/i386-linux-gnu
$ sudo cp libstdc++.so.5.0.7 /usr/lib32
$ cd /usr/lib32
$ sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5
参考
http://tech.ckme.co.jp/icc.shtml
*technique [#ne51fa27]
**Deletion of '^M' code in line end [#y08e96e1]
#highlighter(){{
$ perl -i.old -npe 's/\r\n/\n/' hogehoge.txt
}}
**Batch erasing of specific data [#sf282c32]
#highlighter(){{
$ find . -name 'angO_CH3-*' -exec rm {} \;
}}
.
"." カレントディレクトリ以下を対象
"-name"
~-name
. カレントディレクトリ以下を対象
-name
findでパターンマッチさせたかったら、find . -name '*.c'というようにパターンを含む引数をクオートで囲む。
-exec {} \;はfindで見つかったそれぞれのファイルを別々にコマンドに渡す。
ちなみに-exec {} + は全部まとめてコマンドを渡すことを意味する。
サンプルコード
#highlighter(){{
$ mkdir test
$ touch test/{a,b}
$ find test -exec echo foo {} \; # Here, backslash means escape.
foo test
foo test/a
foo tess/b
$ find test -exec echo foo {} +
foo tes test/a test/b
}}
*Links [#xc81d4b4]
http://oxynotes.com/
iptablesに関する詳しい説明
ネットワークの設定 (Debian/Linux 系)
現在の設定状況の確認
$ sudo ifconfig -a
DHCPによりIPをもらうと
/etc/network/interfaces
#highlighter(){{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
}}
固定 IP アドレスの設定(Debian/Linux 系)
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.0.0
gateway 192.168.0.1
dns-nameservers 192.168.0.2
}}
$ sudo /etc/init.d/networking stop
$ sudo /etc/init.d/networking start
で反映されるはずなのですが、 最近の Debian (6 だか 7 だか)の起動ファイルは少しおかしいので、 変更が反映されないことがある。
そういうわけで再起動するほうが無難です。
*DDNS(Dynamic Domain Name System)[#l3cbcd66]
[[ieserver:http://ieserver.net/]]を利用する場合について。
以前は[[DiCE:http://www.hi-ho.ne.jp/yoshihiro_e/dice/]]を使用していたが、少し重いので専用スクリプトを利用して更新を行う。専用スクリプトは[[本家:http://ieserver.net/tools.html]]で公開されている。
/var/local/bin
#highlighter(){{
(抜粋)
$CURRENT_IP_FILE = "/var/log/ieserver/current_ip"; ← ログ格納先変更
$LOG_FILE = "/var/log/ieserver/ip_update.log"; ← ログ格納先変更
$DDNS_UPDATE = "https://ieserver.net/cgi-bin/dip.cgi"; ← httpsへ変更
$ACCOUNT = "fedorasrv"; ← ユーザ登録時に入力したサブドメイン名(fedorasrv.dip.jpのfedorasrvにあたる部分)
$DOMAIN = "dip.jp"; ← ユーザ登録時に選択したドメイン名(fedorasrv.dip.jpのdip.jpにあたる部分)
$PASSWORD = "xxxxxxxx"; ← ユーザ登録時に入力したパスワード
}}
専用スクリプトをDLした後、拡張子をtxtからplに変更(ddns-update.pl)
下記の様に設定
このスクリプトにはパスワードが書かれているので、アクセス権を変更する。
$ sudo chmod 700 ddns-update.pl
**crontabで定期実行する [#l2f56e3f]
DDNS更新スクリプトをcrontabを使用して定期的に実行されるように設定しておく。Linuxには指定した時間にコマンド自動実行するcrondというサービスがあり、これに実行して欲しいコマンドや実行日時を管理するコマンドがcrontab。
+crontabを編集
$ crontab -e
初めての実行では、エディタの選択を問われる。
*/10 * * * * /home/[ユーザ名]/scripts/ddns/ddns-update.pl
追加した内容の説明をすると、左から「分」、「時刻」、「日付」、「月」、「曜日」、「実行するコマンド」。この場合ワイルドカードマスクの「*」を指定しているので「毎分/10(つまり10分おき)、毎時、毎日、毎月、曜日毎に /home/[ユーザ名]/scripts/ddns/ddns-update.pl を実行する」という意味になる。
+crontabが正常に動作しているかを syslog を確認
$ sudo tail -f /var/log/syslog
$ sudo crontab -e
sudoで実行しているため、ここで記入する内容は、root権限で実行される。
なので、命令文の前にrootと記入するとエラーとなり、そのたびにメールで通知されてしまう。
*/10 * * * * /usr/local/bin/ddns-update.pl
これで、10分おきにDDNS更新スクリプトが実行される。
$ crontab -l
で現在のcron設定が表示される。cronはユーザー単位で設定されるので、この場合は実行ユーザーのcron設定となる。sudoで行うと、rootの設定が表示される。
設定例があったので、
#highlighter(){{
33 14 * * * 14:33に実行(毎日)
15 06 * * * 6:15に実行(毎日)
0 16 * * * 16:00に実行(毎日)
0 04 * * 1 (月)の午前4:00に実行(毎週)
0,10 19 * * 0,2,3 (日)(火)(水)の19:00と19:10に実行(毎週)
0-10 14 1 * * 1日の14:00から14:10まで1分ごとに実行(毎月)
0 0 1,15 * 1 1日と15日と(月)の 0:00に実行(毎月)
42 4 25 * * 25日の4:42に実行(毎月)
0 21 * * 1-6 (月)〜(土)まで21:00に実行(日曜を除く)
0,10,20,30,40,50 * * * * 10分おきに実行(毎時)
*/10 * * * * 10分おきに実行(毎時)
* 1 * * * 1:00から1:59まで1分おきに実行(毎日)
0 4 * * * 4:00に実行(毎日)
0 */1 * * * 0分に1時間おきに実行(毎時)
0 * * * * 0分に1時間おきに実行(毎時)
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02に実行(8:00から20:00まで3時間おきに実行)
30 5 1,15 * * 1日と15日の5:30に実行
}}
*grep [#f1804621]
サブディレクトリ配下のファイルをgrepする場合、
grep -r 検索文字列 ディレクトリ。ディレクトリを再帰的にたどって検索する。
-n 検索結果の出力に行番号をつける。
*PukiWiki [#u1a22646]
**チルダを使用しないで改行 [#oeeb7e29]
pukiwiki.ini.phpの$line_breakを1に設定する。
**添付ファイルサイズ上限の変更 [#tba606fe]
PukiWikiの添付ファイルサイズの上限は1MB
+PukiWikiの設定
plugin/attach.inc.php
#highlighter(){{
// max file size for upload on PHP(PHP default 2MB)
ini_set("upload_max_filesize","2M");
}}
#highlighter(){{
// Max file size for upload on script of PukiWikiX_FILESIZE
define('PLUGIN_ATTACH_MAX_FILESIZE', (16 * 1024 * 1024)); // default: 1MB
}}
+PHPの設定
/etc/php.ini
#highlighter(){{
memory_limit = 64M ; Maximum amount of memory a script may consume (16MB)
}}
この設定値は、PHPが使用できる最大メモリサイズであり、添付ファイルサイズよりも大きく設定する必要がある。
#highlighter(){{
; Maximum size of POST data that PHP will accept.
post_max_size = 32M
}}
#highlighter(){{
; Maximum allowed size for uploaded files.
upload_max_filesize = 16M
}}
+apacheの再起動
**PukiWiki編集ウインドウサイズの変更 [#f1031418]
wiki/default.ini.php
#highlighter(){{
/////////////////////////////////////////////////
// テキストエリアのカラム数
$cols = 80;
/////////////////////////////////////////////////
// テキストエリアの行数
$rows = 20;
}}
**単語の連続によるリンクの削除 [#qa9b45b2]
pukiwikiでaaaBcdeのように単語を繋げると自動で?付リンクが作られてしまう。
この自動表示を消す場合は、
pukiwiki.ini.php
#highlighter(){{
// _Disable_ WikiName auto-linking
// $nowikiname = 0;
$nowikiname = 1;
}}
**ユーザー認証 [#s6effed9]
[[ここ:https://pukiwiki.osdn.jp/?PukiWiki/Install/%E3%83%A6%E3%83%BC%E3%82%B6%E8%AA%8D%E8%A8%BC]]見たほうが早い。
*[[ProFTPD:http://www.proftpd.org/]] [#m5f571ed]
DDNSを有効にするために、inetdで運用。閉じた系であればstandaloneでも構わない。
inetdにしただけでは、動かないので、xinetdをインストールしておく必要がある。
また、ipmasqueradもドメインを入力しておかないと、外部からアクセスできなくなる。
# Use localtime
TimesGMT off
SetEnv TZ JST-9
*ssh [#y70e6d36]
/etc/ssh/sshd_config
**ログの確認 [#g61f4741]
アクセスログは以下に保存される。
/var/log/auth.log
#アクセス成功を抜粋
sudo grep Accepted /var/log/auth.log
#アクセス失敗を抜粋
sudo grep -E "Failed|Invalid" /var/log/auth.log
ここでgrepの-Eオプションは検索に拡張正規表現を使用するために使用。
下記の様に-cオプションを用いることで、不正アクセスのカウントも可能。
$sudo grep -c invalid /var/log/secure
$sudo grep -c Failed /var/log/secure
$sudo grep -c Accepted /var/log/secure
もう少し踏み込んで解析する場合以下のコマンドを用いる。
gunzip -c /var/log/auth.log.*.gz | cat - /var/log/auth.log* | grep "POSSIBLE BREAK-IN ATTEMPT" | sed -e "s/.*getaddrinfo for //g" -e "s/ failed - .*//g" | sort | uniq -cd
+gunzip -c /var/log/auth.log.*.gz | cat - /var/log/auth.log*
gunzipコマンドはgzip圧縮されたファイルを復元するコマンドとのこと。「-c」オプションの場合は結果を標準出力し、元のファイルには手を加えないということ。catコマンドはファイルの内容を表示するコマンドなので、今回の場合はパイプによって渡されたgunzipコマンドの結果と元々圧縮されていない/var/log/auth,.logと/var/log/auth.log.1を繋げてくれます。
+~ | grep "POSSIBLE BREAK-IN ATTEMPT"
1で得られた結果から"POSSIBLE BREAK-IN ATTEMPT"という文字列が含まれた行を抽出しています。ちなみにここまでだけで動かすと例えば
reverse mapping checking getaddrinfo for 235.51.174.61.dial.wz.zj.dynamic.163data.com.cn [61.174.51.235] failed - POSSIBLE BREAK-IN ATTEMPT!
reverse mapping checking getaddrinfo for 235.51.174.61.dial.wz.zj.dynamic.163data.com.cn [61.174.51.235] failed - POSSIBLE BREAK-IN ATTEMPT!
みたいな感じで抽出されます。
+.sed -e "s/.*getaddrinfo for //g" -e "s/ failed - .*//g"
sedコマンドはファイル内の文字列の置換を行うコマンドですが、ここでは2の結果の中から「getaddinfo」という文字列~「failed・・・」までの間に記述されているサーバ名を抜き出すのに使用されているようです。う~ん、頭が痛くなってきた・・・
+.sort | uniq -cd
sortコマンドは3の結果をアルファベッド順で並べ替えるため使用されています。uniq -cdの部分は並べ替えた結果をサーバ名ごとにカウントし、件数を算出しています。uniqコマンドを使用するためにはファイルの中身がきちんとソートされていることが必要だそうで、そのために一度sortコマンドを掛けた後にパイプで渡してuniqを実行しているのだと思われます。ちなみにこのuniqコマンド、重複行を削除するのにも使用されるようですが「-c」オプションで行のカウントを、「-d」オプションで重複行も含めての処理とすることでどのサーバから何回攻撃を喰らったかが分かる、という仕組みのようです。
*NcFTP [#bc260047]
NcFTP is extened ftp client soft.
NCFTP is essential to move directories recursively using FTP.
**conection to ftp server [#jed58053]
#highlighter(){{
$ ncftp [hostname]
$ ncftp ftp://[hostname]/[dir] #直接ディレクトリを指定(ftp://必須)
$ ncftp -u [username] [hostname]
$ ncftp -u [username] -p [password] [hostname]
}}
In case of only start up of NcFTP
#highlighter(){{
$ ncftp
$ open -u [hostname]
}}
or
#highlighter(){{
$ open -u [username] [hostname]
}}
&color(#ff0000){''Basically, write in the order of local, remote.''};
Therefore, in case of input of following command, wm0472 directory is created, and wild card is applied in it.
#highlighter(){{
> get -R wm0472 .
}}
**Batch command [#s8471826]
#highlighter(){{
$ ncftpget -u [username] -p [password] -R 192.168.*.* [local directory] [remote directory]
$ ncftpget -u onot -p ******** -R 10.34.83.4 /home/onot/work/ /mnt/raid03/simulation/wm0474
}}
#highlighter(){{
$ ncftpput -u onot -p ******** -R 10.34.83.3 [source path] [destination path]
$ ncftpput -u onot -p ******** -R 10.34.83.3 /mnt/raid04/onot/scf022 /home/hora/hdd/wm5223
}}
#highlighter(){{
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022 /home/hora/hdd/wm5145
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/scf103data/22 /home/hora/scf103data/22/mw0101
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/onot/ /home/onot/work/nwm5300
0.34.83.3 /mnt/raid04/onot/scf022/hora/scf107data /home/hora/scf107data/work/visco1902
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/hora/scf107data /home/hora/scf107data/work/visco1903
}}
10.34.83.23のホームディレクトリをそのままFreeNASに複製。
複製先、複製元の順に記述。
その際、FreeNASのonotアカウントのホームディレクトリは/mnt/box/testboxにしているため、下記コマンドではそのままホームディレクトリに複製される。
ncftpput -u onot -p yakan -R 10.34.83.192 . onot
*NTP [#e5966a77]
最近Ubuntuではntpdateを使わずにSystemdの機能を使って時刻の同期を行っているら。
初期設定では時刻の同期にntp.ubuntu.comサーバーが使われている。
NICTのサーバーに変更する場合は、
sudo sed -i 's/#NTP=/NTP=ntp.nict.jp/g' /etc/systemd/timesyncd.conf
再起動後、ntp.nict.jpを使って時刻の同期が始まる。
同期の確認は、
systemctl -l status systemd-timesyncd
終了行:
#contents
*ユーザー管理 [#h802ff66]
**ユーザーの追加 [useradd] [#jbb8b666]
#highlighter(){{
$ sudo useradd -h
使い方: useradd [オプション] LOGIN
useradd -D
useradd -D [オプション]
オプション:
-b, --base-dir BASE_DIR 新アカウントのホームディクトリの
ベースディレクトリ
-c, --comment COMMENT 新アカウントの GECOS フィールド
-d, --home-dir HOME_DIR 新アカウントのホームディレクトリ
-D, --defaults useradd のデフォルト設定を表示または変更
-e, --expiredate EXPIRE_DATE 新アカウントの期限切れ日付
-f, --inactive INACTIVE 新アカウントのパスワード無効化日数
-g, --gid GROUP 新アカウントの主グループの名前または ID
-G, --groups GROUPS 新アカウントの補助グループのリスト
-h, --help このヘルプを表示して終了する
-k, --skel SKEL_DIR 雛型ディレクトリに指定のものを使う
-K, --key KEY=VALUE /etc/login.defs のデフォルトより優先される
-l, --no-log-init ユーザを lastlog, faillog のデータベースに
追加しない
-m, --create-home ユーザのホームディレクトリを作成する
-M, --no-create-home ユーザのホームディレクトリを作成しない
-N, --no-user-group ユーザと同名のグループを作成しない
-o, --non-unique UID が同じユーザの作成を許す
-p, --password PASSWORD 新アカウントの暗号化されたパスワード
-r, --system システムアカウントを作成します
-R, --root CHROOT_DIR chroot するディレクトリ
-s, --shell SHELL 新アカウントのログインシェル
-u, --iud UID 新アカウントのユーザ ID
-U, --user-group ユーザと同じ名前のグループを作成する
-Z, --selinux-user SEUSER SELinux のユーザマッピングに指定した
SEUSER を使う
}}
**ユーザの削除 [userdel] [#bf3e8f46]
#highlighter(){{
$ sudo userdel -h
使い方: userdel [オプション] LOGIN
オプション:
-f, --force 当該ユーザの所有でないファイルも削除する
-h, --help このヘルプを表示して終了する
-r, --remove ホームディレクトリとメールスプールを削除する
-R, --root CHROOT_DIR chroot するディレクトリ
-Z, --selinux-user このユーザの SELinux ユーザマッピングを
全て削除する
}}
**ユーザー一覧 [#j9252ace]
/etc/passwd
#highlighter(){{
・・・
onot:x:1000:1000:onot,,,:/home/onot:/bin/bash
・・・
}}
onot: user name
x: It means password, but "x" is shown in recent system.
1000: User ID
1000: Group ID
Blank columns are arbitrary comments, but users should not change directly.
home/<user name>: It is home directory of each user. If there is not the directory, "/" becomes default directory.
/bin/bash: Default shell setting
** [#l6d660fd]
*tcshrc [#j8a1061d]
t
source ~/.cshrc
source /opt/intel/Compiler/11.1/069/bin/ifortvars.csh intel64
set path=(/usr/local/comsol43b/bin $path)
alias ls 'ls --color=tty'
alias emacs 'emacs -nw'
alias sumire 'ssh onot@172.29.0.219'
alias azisai 'ssh ono@172.29.0.235'
alias scf020 'ssh onot@10.34.83.20'
alias scf023 'ssh onot@10.34.83.23'
*samba [#hb31a7d0]
sambaのinstall
$ sudo apt-get install samba
ユーザ作成/パスワード変更
$ sudo smbpasswd -a onot
ユーザ削除
$ sudo smbpasswd -x onot
ディレクトリの共有
/etc/samba/smb.conf
&color(#ff0000){末尾に追加};
#highlighter(){{
[onot]
path = /home/onot
writable = yes
}}
samba再起動
$ sudo /etc/init.d/samba restart
*intel Compiler(ver 11, 2013とか) [#i5696363]
解答の後インストール。
$ tar zxvf l_fcompxe_2013_sp1.3.174.tgz
cd l_fcompxe_2013_sp1.3.174
$ sudo ./install.sh
下記エラーを表示することがある。
libstdc++ (libstdc++6 を含む)
glibc
libgcc
[[ここ:http://packages.debian.org/stable/base/libstdc++5]]からamd64用とi386用の両方をダウンロードしてくる。
そしてまず、64bit用の方はdpkgをつかってインストールする。
#ref(libstdc++5_3.3.6-28_amd64.deb)
#ref(libstdc++5_3.3.6-28_i386.deb)
$ sudo sudo dpkg -i libstdc++5_3.3.6-28_amd64.deb
32bit用のファイルは、以上インストールだと望みの場所にインストールしてくれないので、パッケージからファイルを取り出してインストールする。まず、
$ sudo dpkg --extract libstdc++5_3.3.6-18_i386.deb ./
で解凍する。
$ cd usr/lib/i386-linux-gnu
$ sudo cp libstdc++.so.5.0.7 /usr/lib32
$ cd /usr/lib32
$ sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5
参考
http://tech.ckme.co.jp/icc.shtml
*technique [#ne51fa27]
**Deletion of '^M' code in line end [#y08e96e1]
#highlighter(){{
$ perl -i.old -npe 's/\r\n/\n/' hogehoge.txt
}}
**Batch erasing of specific data [#sf282c32]
#highlighter(){{
$ find . -name 'angO_CH3-*' -exec rm {} \;
}}
.
"." カレントディレクトリ以下を対象
"-name"
~-name
. カレントディレクトリ以下を対象
-name
findでパターンマッチさせたかったら、find . -name '*.c'というようにパターンを含む引数をクオートで囲む。
-exec {} \;はfindで見つかったそれぞれのファイルを別々にコマンドに渡す。
ちなみに-exec {} + は全部まとめてコマンドを渡すことを意味する。
サンプルコード
#highlighter(){{
$ mkdir test
$ touch test/{a,b}
$ find test -exec echo foo {} \; # Here, backslash means escape.
foo test
foo test/a
foo tess/b
$ find test -exec echo foo {} +
foo tes test/a test/b
}}
*Links [#xc81d4b4]
http://oxynotes.com/
iptablesに関する詳しい説明
ネットワークの設定 (Debian/Linux 系)
現在の設定状況の確認
$ sudo ifconfig -a
DHCPによりIPをもらうと
/etc/network/interfaces
#highlighter(){{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
}}
固定 IP アドレスの設定(Debian/Linux 系)
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.0.0
gateway 192.168.0.1
dns-nameservers 192.168.0.2
}}
$ sudo /etc/init.d/networking stop
$ sudo /etc/init.d/networking start
で反映されるはずなのですが、 最近の Debian (6 だか 7 だか)の起動ファイルは少しおかしいので、 変更が反映されないことがある。
そういうわけで再起動するほうが無難です。
*DDNS(Dynamic Domain Name System)[#l3cbcd66]
[[ieserver:http://ieserver.net/]]を利用する場合について。
以前は[[DiCE:http://www.hi-ho.ne.jp/yoshihiro_e/dice/]]を使用していたが、少し重いので専用スクリプトを利用して更新を行う。専用スクリプトは[[本家:http://ieserver.net/tools.html]]で公開されている。
/var/local/bin
#highlighter(){{
(抜粋)
$CURRENT_IP_FILE = "/var/log/ieserver/current_ip"; ← ログ格納先変更
$LOG_FILE = "/var/log/ieserver/ip_update.log"; ← ログ格納先変更
$DDNS_UPDATE = "https://ieserver.net/cgi-bin/dip.cgi"; ← httpsへ変更
$ACCOUNT = "fedorasrv"; ← ユーザ登録時に入力したサブドメイン名(fedorasrv.dip.jpのfedorasrvにあたる部分)
$DOMAIN = "dip.jp"; ← ユーザ登録時に選択したドメイン名(fedorasrv.dip.jpのdip.jpにあたる部分)
$PASSWORD = "xxxxxxxx"; ← ユーザ登録時に入力したパスワード
}}
専用スクリプトをDLした後、拡張子をtxtからplに変更(ddns-update.pl)
下記の様に設定
このスクリプトにはパスワードが書かれているので、アクセス権を変更する。
$ sudo chmod 700 ddns-update.pl
**crontabで定期実行する [#l2f56e3f]
DDNS更新スクリプトをcrontabを使用して定期的に実行されるように設定しておく。Linuxには指定した時間にコマンド自動実行するcrondというサービスがあり、これに実行して欲しいコマンドや実行日時を管理するコマンドがcrontab。
+crontabを編集
$ crontab -e
初めての実行では、エディタの選択を問われる。
*/10 * * * * /home/[ユーザ名]/scripts/ddns/ddns-update.pl
追加した内容の説明をすると、左から「分」、「時刻」、「日付」、「月」、「曜日」、「実行するコマンド」。この場合ワイルドカードマスクの「*」を指定しているので「毎分/10(つまり10分おき)、毎時、毎日、毎月、曜日毎に /home/[ユーザ名]/scripts/ddns/ddns-update.pl を実行する」という意味になる。
+crontabが正常に動作しているかを syslog を確認
$ sudo tail -f /var/log/syslog
$ sudo crontab -e
sudoで実行しているため、ここで記入する内容は、root権限で実行される。
なので、命令文の前にrootと記入するとエラーとなり、そのたびにメールで通知されてしまう。
*/10 * * * * /usr/local/bin/ddns-update.pl
これで、10分おきにDDNS更新スクリプトが実行される。
$ crontab -l
で現在のcron設定が表示される。cronはユーザー単位で設定されるので、この場合は実行ユーザーのcron設定となる。sudoで行うと、rootの設定が表示される。
設定例があったので、
#highlighter(){{
33 14 * * * 14:33に実行(毎日)
15 06 * * * 6:15に実行(毎日)
0 16 * * * 16:00に実行(毎日)
0 04 * * 1 (月)の午前4:00に実行(毎週)
0,10 19 * * 0,2,3 (日)(火)(水)の19:00と19:10に実行(毎週)
0-10 14 1 * * 1日の14:00から14:10まで1分ごとに実行(毎月)
0 0 1,15 * 1 1日と15日と(月)の 0:00に実行(毎月)
42 4 25 * * 25日の4:42に実行(毎月)
0 21 * * 1-6 (月)〜(土)まで21:00に実行(日曜を除く)
0,10,20,30,40,50 * * * * 10分おきに実行(毎時)
*/10 * * * * 10分おきに実行(毎時)
* 1 * * * 1:00から1:59まで1分おきに実行(毎日)
0 4 * * * 4:00に実行(毎日)
0 */1 * * * 0分に1時間おきに実行(毎時)
0 * * * * 0分に1時間おきに実行(毎時)
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02に実行(8:00から20:00まで3時間おきに実行)
30 5 1,15 * * 1日と15日の5:30に実行
}}
*grep [#f1804621]
サブディレクトリ配下のファイルをgrepする場合、
grep -r 検索文字列 ディレクトリ。ディレクトリを再帰的にたどって検索する。
-n 検索結果の出力に行番号をつける。
*PukiWiki [#u1a22646]
**チルダを使用しないで改行 [#oeeb7e29]
pukiwiki.ini.phpの$line_breakを1に設定する。
**添付ファイルサイズ上限の変更 [#tba606fe]
PukiWikiの添付ファイルサイズの上限は1MB
+PukiWikiの設定
plugin/attach.inc.php
#highlighter(){{
// max file size for upload on PHP(PHP default 2MB)
ini_set("upload_max_filesize","2M");
}}
#highlighter(){{
// Max file size for upload on script of PukiWikiX_FILESIZE
define('PLUGIN_ATTACH_MAX_FILESIZE', (16 * 1024 * 1024)); // default: 1MB
}}
+PHPの設定
/etc/php.ini
#highlighter(){{
memory_limit = 64M ; Maximum amount of memory a script may consume (16MB)
}}
この設定値は、PHPが使用できる最大メモリサイズであり、添付ファイルサイズよりも大きく設定する必要がある。
#highlighter(){{
; Maximum size of POST data that PHP will accept.
post_max_size = 32M
}}
#highlighter(){{
; Maximum allowed size for uploaded files.
upload_max_filesize = 16M
}}
+apacheの再起動
**PukiWiki編集ウインドウサイズの変更 [#f1031418]
wiki/default.ini.php
#highlighter(){{
/////////////////////////////////////////////////
// テキストエリアのカラム数
$cols = 80;
/////////////////////////////////////////////////
// テキストエリアの行数
$rows = 20;
}}
**単語の連続によるリンクの削除 [#qa9b45b2]
pukiwikiでaaaBcdeのように単語を繋げると自動で?付リンクが作られてしまう。
この自動表示を消す場合は、
pukiwiki.ini.php
#highlighter(){{
// _Disable_ WikiName auto-linking
// $nowikiname = 0;
$nowikiname = 1;
}}
**ユーザー認証 [#s6effed9]
[[ここ:https://pukiwiki.osdn.jp/?PukiWiki/Install/%E3%83%A6%E3%83%BC%E3%82%B6%E8%AA%8D%E8%A8%BC]]見たほうが早い。
*[[ProFTPD:http://www.proftpd.org/]] [#m5f571ed]
DDNSを有効にするために、inetdで運用。閉じた系であればstandaloneでも構わない。
inetdにしただけでは、動かないので、xinetdをインストールしておく必要がある。
また、ipmasqueradもドメインを入力しておかないと、外部からアクセスできなくなる。
# Use localtime
TimesGMT off
SetEnv TZ JST-9
*ssh [#y70e6d36]
/etc/ssh/sshd_config
**ログの確認 [#g61f4741]
アクセスログは以下に保存される。
/var/log/auth.log
#アクセス成功を抜粋
sudo grep Accepted /var/log/auth.log
#アクセス失敗を抜粋
sudo grep -E "Failed|Invalid" /var/log/auth.log
ここでgrepの-Eオプションは検索に拡張正規表現を使用するために使用。
下記の様に-cオプションを用いることで、不正アクセスのカウントも可能。
$sudo grep -c invalid /var/log/secure
$sudo grep -c Failed /var/log/secure
$sudo grep -c Accepted /var/log/secure
もう少し踏み込んで解析する場合以下のコマンドを用いる。
gunzip -c /var/log/auth.log.*.gz | cat - /var/log/auth.log* | grep "POSSIBLE BREAK-IN ATTEMPT" | sed -e "s/.*getaddrinfo for //g" -e "s/ failed - .*//g" | sort | uniq -cd
+gunzip -c /var/log/auth.log.*.gz | cat - /var/log/auth.log*
gunzipコマンドはgzip圧縮されたファイルを復元するコマンドとのこと。「-c」オプションの場合は結果を標準出力し、元のファイルには手を加えないということ。catコマンドはファイルの内容を表示するコマンドなので、今回の場合はパイプによって渡されたgunzipコマンドの結果と元々圧縮されていない/var/log/auth,.logと/var/log/auth.log.1を繋げてくれます。
+~ | grep "POSSIBLE BREAK-IN ATTEMPT"
1で得られた結果から"POSSIBLE BREAK-IN ATTEMPT"という文字列が含まれた行を抽出しています。ちなみにここまでだけで動かすと例えば
reverse mapping checking getaddrinfo for 235.51.174.61.dial.wz.zj.dynamic.163data.com.cn [61.174.51.235] failed - POSSIBLE BREAK-IN ATTEMPT!
reverse mapping checking getaddrinfo for 235.51.174.61.dial.wz.zj.dynamic.163data.com.cn [61.174.51.235] failed - POSSIBLE BREAK-IN ATTEMPT!
みたいな感じで抽出されます。
+.sed -e "s/.*getaddrinfo for //g" -e "s/ failed - .*//g"
sedコマンドはファイル内の文字列の置換を行うコマンドですが、ここでは2の結果の中から「getaddinfo」という文字列~「failed・・・」までの間に記述されているサーバ名を抜き出すのに使用されているようです。う~ん、頭が痛くなってきた・・・
+.sort | uniq -cd
sortコマンドは3の結果をアルファベッド順で並べ替えるため使用されています。uniq -cdの部分は並べ替えた結果をサーバ名ごとにカウントし、件数を算出しています。uniqコマンドを使用するためにはファイルの中身がきちんとソートされていることが必要だそうで、そのために一度sortコマンドを掛けた後にパイプで渡してuniqを実行しているのだと思われます。ちなみにこのuniqコマンド、重複行を削除するのにも使用されるようですが「-c」オプションで行のカウントを、「-d」オプションで重複行も含めての処理とすることでどのサーバから何回攻撃を喰らったかが分かる、という仕組みのようです。
*NcFTP [#bc260047]
NcFTP is extened ftp client soft.
NCFTP is essential to move directories recursively using FTP.
**conection to ftp server [#jed58053]
#highlighter(){{
$ ncftp [hostname]
$ ncftp ftp://[hostname]/[dir] #直接ディレクトリを指定(ftp://必須)
$ ncftp -u [username] [hostname]
$ ncftp -u [username] -p [password] [hostname]
}}
In case of only start up of NcFTP
#highlighter(){{
$ ncftp
$ open -u [hostname]
}}
or
#highlighter(){{
$ open -u [username] [hostname]
}}
&color(#ff0000){''Basically, write in the order of local, remote.''};
Therefore, in case of input of following command, wm0472 directory is created, and wild card is applied in it.
#highlighter(){{
> get -R wm0472 .
}}
**Batch command [#s8471826]
#highlighter(){{
$ ncftpget -u [username] -p [password] -R 192.168.*.* [local directory] [remote directory]
$ ncftpget -u onot -p ******** -R 10.34.83.4 /home/onot/work/ /mnt/raid03/simulation/wm0474
}}
#highlighter(){{
$ ncftpput -u onot -p ******** -R 10.34.83.3 [source path] [destination path]
$ ncftpput -u onot -p ******** -R 10.34.83.3 /mnt/raid04/onot/scf022 /home/hora/hdd/wm5223
}}
#highlighter(){{
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022 /home/hora/hdd/wm5145
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/scf103data/22 /home/hora/scf103data/22/mw0101
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/onot/ /home/onot/work/nwm5300
0.34.83.3 /mnt/raid04/onot/scf022/hora/scf107data /home/hora/scf107data/work/visco1902
ncftpput -u onot -p hanagasa -R 10.34.83.3 /mnt/raid04/onot/scf022/hora/scf107data /home/hora/scf107data/work/visco1903
}}
10.34.83.23のホームディレクトリをそのままFreeNASに複製。
複製先、複製元の順に記述。
その際、FreeNASのonotアカウントのホームディレクトリは/mnt/box/testboxにしているため、下記コマンドではそのままホームディレクトリに複製される。
ncftpput -u onot -p yakan -R 10.34.83.192 . onot
*NTP [#e5966a77]
最近Ubuntuではntpdateを使わずにSystemdの機能を使って時刻の同期を行っているら。
初期設定では時刻の同期にntp.ubuntu.comサーバーが使われている。
NICTのサーバーに変更する場合は、
sudo sed -i 's/#NTP=/NTP=ntp.nict.jp/g' /etc/systemd/timesyncd.conf
再起動後、ntp.nict.jpを使って時刻の同期が始まる。
同期の確認は、
systemctl -l status systemd-timesyncd
ページ名: