computer/linux
の編集
http://siti.dip.jp/wiki/index.php?computer/linux
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
bikefriday
books
BracketName
chemical
computer
computer/equation
computer/gromacs
computer/linux
computer/linux/apache2
computer/linux/cluster
computer/linux/emacs
computer/linux/FreeNAS
computer/linux/iptables
computer/linux/networking
computer/linux/ProFTPD
computer/linux/pukiwiki
computer/linux/RaspberryPi
computer/linux/service
computer/linux/torque
computer/programing
computer/programing/Eclipse
computer/programing/Python
computer/programing/python
computer/programing/Python/matplotlib
computer/programing/regular expression
computer/programing/vba
computer/programing/vmd
computer/windows
computer/windows/command prompt
computer/windows/ffmpeg
computer/windows/ImageJ
computer/windows/Inkscape
computer/windows/service
computer/windows/VBA
computer/windows/WebExpression
english
english/mail
english/P.R. response
english/あ
english/か
english/さ
FormattingRules
FrontPage
gnuplot
Help
InterWiki
InterWikiName
InterWikiSandBox
memo
memo/201902
memo/201903
memo/201904
memo/201905
memo/201907
memo/201911
memo/ai
memo/descri
memo/document
memo/life
memo/message
memo/procedure
memo/record
memo/work
memo/引っ越し
MenuBar
microserver
Notebook
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
ST
testable
WikiEngines
WikiName
WikiWikiWeb
work
YukiWiki
#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
テキスト整形のルールを表示する