2009年2月28日土曜日

Debian/cronのメモ

こんにちは、モリモルです。

cron(クローン)のメモです。

/etc/init.d/cron
cronのrcスクリプト

/var/log/cron.log
cronのログファイル


ユーザーのcron設定

/var/spool/cron/crontabs/(ユーザー名)
各ユーザーのcronファイル

crontab [-u (ユーザー名)] {-l | -r | -e}

-e:編集、-r:削除、-l:表示

-eで起動するエディタは環境変数EDITOR or alternativeのeditor

書式
分 時 日 月 曜日 コマンド

[分の場合]
*/3 ----- 3分ごとに
0,1,10,45 ----- 0分、10分、45分
0,20-30,50 ----- 0分、20~30分、50分

[曜日の場合]
1-5 ----- 月~金

環境変数の設定
必要な場合は記述できる。

PATH=/usr/local/bin:/usr/bin
# m h dom mon dow command



rootのcron設定

/etc/crontab

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

test -x /usr/sbin/anacron....run-parts....
anacronがなければ、
run-partsコマンドで/etc/cron.*ディレクトリにある実行ファイルを全て実行する。

/etc/cron.dディレクトリ
細かい設定が必要な場合は、/etc/crontabと同じ書式でファイルを置いておく。

Debian/ユーザー管理

こんにちは、モリモルです。

ユーザー管理のメモです。


グループ

addgroup [--gid 1000] (新規グループ名)
グループIDは1000~29999の間で。

/etc/group
[グループ名]:x:[グループID]:[所属ユーザー]
パスワードはshadowなんでx
所属ユーザーは、デフォルトグループではなく、追加グループとして登録されたユーザー名。

グループにユーザーを追加
usermod [-g (デフォルトグループ)] [-G (追加グループ)] (ユーザ名)
adduser (ユーザー名) (グループ名)

グループの削除
groupdel (グループ名)
デフォルトグループに所属ユーザーがいる場合は削除できない


ユーザー

ユーザー追加
adduser [--uid 1000] [--gid 1000] [--disabled-password] (新規ユーザー名)

--disabled-password
パスワードをロック、プロンプトからログインできない。rootからはログイン可

/etc/skel
新規ユーザーを作成時に/home/ユーザー名でコピーされる

/etc/passwd
(ユーザー名):(ユーザーID):(所属グループID):,,,:(ホームディレクトリ):(シェルのパス)
morimoru:x:1000:1002:morimoru,,,:/home/morimoru:/bin/bash

/etc/shadow
(ユーザー名):(暗号化パスワード):(パスワードの有効期限とか、、)

ユーザー情報の変更
usermod [-d (ホームディレクトリ)] [-L] [-U] (ユーザー名)
-L:パスワードをロック
-U:パスワードをアンロック

ユーザーの削除
userdel [-r] (ユーザー名)
-r:ホームディレクトリも削除

2009年2月21日土曜日

Debian/init、ランレベルとか

こんにちは、モリモルです。

Debianのinitとか、ランレベルのメモです。

ランレベルの変更
telinit [-t 秒数] 【ランレベル】

/etc/iniitabを読み込み
telinit q
kill -HUP 1
initのプロセスIDが1。

以下、起動からの流れ

1--起動

2--init(/sbin/init)

3--/etc/inittabを読み込み

/etc/inittab

id:2:initdefault: <---ランレベルの指定
si::sysinit:/etc/init.d/rcS <---rcSスクリプトを実行

ランレベル
0:停止/1:シングルユーザー/2-5:マルチユーザー/6:再起動


4--rcSを実行、/etc/rcS.d/内のファイルを実行
これらスクリプトは、ハードウェアなどの基本的な設定を行う。

【S or K】【数値】【スクリプト名】
S:起動/K:停止、数値は実行する順番。

各ファイルは/etc/init.d/にある各rcスクリプトへのシンボリックリンクになっている。
/etc/rcS.d/

lrwxrwxrwx 1 root root 18 2009-02-02 22:54 S01glibc.sh -> ../init.d/glibc.sh
lrwxrwxrwx 1 root root 21 2009-02-02 22:55 S02hostname.sh -> ../init.d/hostname.sh



5--指定ランレベルのスクリプトを実行
/etc/rc*.dにあるスクリプトを実行。
rcS.dと同じで、/etc/init.d/にある各rcスクリプトへのシンボリックリンク。
K(停止)→ S(起動)の順で実行。

2009年2月14日土曜日

sudo

こんにちは、モリモルです。

sudoのメモです。

設定ファイル
/etc/sudoers

visudo
visudoコマンドで編集するエディタは、環境変数 EDITORに指定する。
export EDITOR=vim

この環境変数がないと、altervertiveのeditorが使われる。

debian:~# update-alternatives --display editor
editor - status is auto.
link currently points to /bin/nano


【ユーザー名】 【ホスト】=(【代行するユーザ】) 【実行できるコマンド】
morimoru ALL=(ALL) ALL
ユーザーmorimoruは、全てのホストから、全てのユーザーを代行して、全てのコマンドを実行できる。

%【グループ名】 【ホスト】=(【代行するユーザ】) 【実行できるコマンド】
%wheel ALL=(ALL) ALL
wheelグループのユーザーは、全てのホストから、全てのユーザーを代行して、全てのコマンドを実行できる。

(【代行するユーザー】)を省略すると、rootということになります。



Aliasを作っていろいろとまとめる

ローカルネットワークのエイリアス
Host_Alias LOCAL = 192.168.91.0/24

ユーザーをまとめたエイリアス
User_Alias DEV = morimoru, takaki

コマンドをまとめたエイリアス
Cmnd_Alias IFCONFIG = /sbin/ifconfig
Cmnd_Alias REMOVE = /bin/rm, /usr/bin/unlink, /bin/rmdir, /sbin/newfs
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/halt, /sbin/poweroff


DEV LOCAL=(ALL) ALL, !IFCONFIG, !REMOVE, !SHUTDOWN

ユーザー(morimoruとtakaki)は、ローカルアドレスのホストからののみ、全てのユーザーとして、
コマンドエリアス(IFCONFIG/REMOVE/SHUTDOWN)意外のコマンドを全て実行できる。

morimoru@debian:~$ sudo -u root ifconfig
Sorry, user morimoru is not allowed to execute '/sbin/ifconfig' as root on debian.localdomain.



sudoのログ
sudoしたログは、/var/log/auth.logに記録されます。

morimoru@debian:~$ sudo tail -2 /var/log/auth.log
Feb 18 18:15:02 debian sudo: morimoru : TTY=pts/0 ; PWD=/home/morimoru ; USER=root ; COMMAND=/usr/bin/tail -2 /var/log/auth.log
Feb 18 18:15:14 debian sudo: morimoru : command not allowed ; TTY=pts/0 ; PWD=/home/morimoru ; USER=root ; COMMAND=/sbin/ifconfig

2009年2月9日月曜日

APT/インストール

こんにちは、モリモルです。

APT関連のメモが続きます。
APTでパッケージのインストールする場合です。

apt-get [-s] install パッケージ名/Debianバージョン

-sオプションを付けると、実際にはインストールせずに、インストール時にどうなるかを確認できます。


debian:~# apt-get -s install rails
(省略)
The following extra packages will be installed:
irb1.8 liberb-ruby libpgsql-ruby1.8 libpq4 libreadline-ruby1.8 libredcloth-ruby1.8 rake rdoc rdoc1.8 ruby
Suggested packages: <---- 入れたほうがよいパッケージ
libapache2-mod-ruby libapache-mod-ruby libapache2-mod-fcgid libfcgi-ruby1.8
Recommended packages: <---- 入れると便利なパッケージ
irb
The following NEW packages will be installed: <---- 依存パッケージ(APTが自動でインスコ
irb1.8 liberb-ruby libpgsql-ruby1.8 libpq4 libreadline-ruby1.8 libredcloth-ruby1.8 rails rake rdoc rdoc1.8 ruby
0 upgraded, 11 newly installed, 0 to remove and 3 not upgraded.
Inst libreadline-ruby1.8 (1.8.5-4etch4 Debian-Security:4.0/stable)
(省略)
Conf libreadline-ruby1.8 (1.8.5-4etch4 Debian-Security:4.0/stable)
(省略)

Inst ----- パッケージの展開
Conf ----- パッケージの設定
Rmv ----- パッケージの削除


パッケージのDLが途中で終了した場合
再度、「apt-get install パッケージ名」でダウンロードを再開してくれるみたいです。


debian:~# apt-get install rails
Reading package lists... Done
(省略)
Do you want to continue [Y/n]? y
Get:1 http://security.debian.org etch/updates/main libreadline-ruby1.8 1.8.5-4etch4 [197kB]
(省略)
10% [4 irb1.8 65813/236kB 27%] [3 libpq4 38728/290kB 13%]
【DLを中断】


debian:~# ls -l /var/cache/apt/archives/
total 208
-rw-r--r-- 1 root root 3530 Jan 12 2005 liberb-ruby_2.0.4+ruby1.8.2-1_all.deb
-rw-r--r-- 1 root root 197442 Dec 6 22:00 libreadline-ruby1.8_1.8.5-4etch4_i386.deb
【途中までダウンロード済み】


debian:~# apt-get install rails <-----再度インストール
debian:~# ls -l /var/cache/apt/archives/
-rw-r--r-- 1 root root 235540 Dec 6 20:55 irb1.8_1.8.5-4etch4_all.deb
-rw-r--r-- 1 root root 3530 Jan 12 2005 liberb-ruby_2.0.4+ruby1.8.2-1_all.deb
(残りのパッケージもDL)
-rw-r--r-- 1 root root 39354 Oct 17 2006 libpgsql-ruby1.8_0.7.1-10_i386.deb
(省略)
-rw-r--r-- 1 root root 18980 Jan 12 2005 ruby_1.8.2-1_all.deb


パッケージの展開 or 設定に失敗した場合
パッケージの展開で失敗した場合、パッケージの状態がUになります。
設定で失敗した場合は、Cになります。

debian:~# dpkg --list | grep iU
iU irb1.8 1.8.5-4etch4 Interactive Ruby (for Ruby 1.8)
iU liberb-ruby 2.0.4+ruby1.8.2-1 Tiny eRuby
(省略)


dpkg --configure --pending
設定をし直します。

debian:~# dpkg --configure --pending
Setting up libpq4 (8.1.15-0etch1) ...

Setting up liberb-ruby (2.0.4+ruby1.8.2-1) ...
(省略)


debian:~# dpkg --list | grep ruby
ii irb1.8 1.8.5-4etch4 Interactive Ruby (for Ruby 1.8)
ii liberb-ruby 2.0.4+ruby1.8.2-1 Tiny eRuby
(省略)


編集中

APT/依存性の確認

こんにちは、モリモルです。

まだまだ、APT関連のメモが続きます。

パッケージの依存性を確認するには、
apt-cache depends パッケージ名


debian:~# apt-cache depends rails
rails
Depends: ruby <------railsが依存してるパッケージ
(省略)
|Suggests: libapache2-mod-ruby <-----一緒に入れると便利なパッケージ
(省略)
Recommends: irb <---------入れないと機能の一部に支障があるかも。。
(省略)
Conflicts: <-----競合パッケージ(おそらくAPTが削除してくれる)

「Suggests」「Recommends」はAPTが自動的にインストールしてくれないようです。



逆に指定したパッケージに依存している、パッケージを調べるには、
apt-cache showpkg パッケージ名


debian:~# apt-cache showpkg rails
Package: rails
Versions:
(省略)
Reverse Depends:
mongrel,rails <------railsを必要とするパッケージ
(省略)
Dependencies:
(省略)
Reverse Provides:
(省略)

2009年2月7日土曜日

APT/パッケージ詳細

こんにちは、モリモルです。

しばらく、APT関連のメモが続きます。。


apt-cache show パッケージ名
パッケージの詳細をapt-lineから取得します。

Package: rails
Priority: optional
Section: web
Installed-Size: 12940
Maintainer: Adam Majer <adamm@zombino.com>
Architecture: all
Version: 1.1.6-3
Depends: ruby, ruby1.8 (>= 1.8.2-3), rake (>> 0.7.0), rdoc (>> 1.8.2), libpgsql-ruby1.8 | libmysql-ruby1.8 | libdbi-ruby1.8, libredcloth-ruby1.8, liberb-ruby
Recommends: irb (>> 1.8)
Suggests: libapache2-mod-ruby | libapache-mod-ruby | libapache2-mod-fcgid, libfcgi-ruby1.8
Conflicts: libdevel-logger-ruby1.8
Filename: pool/main/r/rails/rails_1.1.6-3_all.deb
Size: 1777424(省略)

Priority
パッケージの重要度らしいです。
optional(自由選択)/require(Debianに必須)/important、standard(インスコした方がよい)

Maintainer
アダムさんがメンテナンスしてくれているようです。

Version
【オリジナルバージョン番号】-【Debianのリビジョン】

Replaces
このパッケージをインストールすると削除されるパッケージ(APTの場合のみ)

Depends
依存パッケージ(APTがすべてインストールしてくれます。)

Recommends
インストールしないと、機能の一部に不具合がでるかもしれないパッケージ(APTはインストールしてくれません。)

Suggests
一緒にインストールすると便利なパッケージ

Conflicts
競合パッケージ、APTが削除してくれます。
Replacesとは異なり、代わりをしてくれません。

Filename
apt-lineのURL上のディレクトリ
ここからDLしてることになります。
http://ftp.jp.debian.org/debian/pool/main/r/rails/

APT/パッケージを検索

こんにちは、モリモルです。

引き続き、パッケージ関連のメモです。
前回は、apt-lineを追加したので各apt-lineからパッケージを探します。

sudoを探してみようと思います。


apt-cache search "検索文字"

検索文字を"sudo"にするより、" sudo "と前後に空白を入れると絞りやすいようです。

debian:~# apt-cache search " sudo "
(省略)
sudo - Provide limited super user privileges to specific users
sudo-ldap - Provide limited super user privileges to specific users



apt-cache show パッケージ名

「apt-cache show sudo」で各apt-line上にある、sudoパッケージの詳細情報を調べられます。

debian:~# apt-cache show sudo
Package: sudo
(省略)
Version: 1.6.9p17-2 <-----1コ
(省略)
Package: sudo
(省略)
Version: 1.6.8p12-4 <-----2コ
(省略)

パッケージが2コ選出されました。
これは、私がapt-lineに「testing」と「stable」の両方を入れているからです。

debian:~# apt-cache policy sudo
sudo:
Installed: (none)
Candidate: 1.6.9p17-2
Version table:
1.6.9p17-2 0
500 http://ftp.jp.debian.org testing/main Packages
1.6.8p12-4 0
500 http://ftp.jp.debian.org etch/main Packages

基本的にバージョンの新しい方がインストール候補になるので、
このまま、apt-get install sudoをすると、testingが入ってしまいます。

APT/apt-lineについて

こんにちは、モリモルです。
Debianをインスコしたので、メモです。

Debianはパッケージ管理に、APT(Advance Package Tool)を使ってます。

apt-line
APTでパッケージを拾ってくる先です。
/etc/apt/sources.listで設定ができます。
debian:~# cat /etc/apt/sources.list
#deb cdrom:[Debian GNU/Linux 4.0 r6 _Etch_ - Official i386 NETINST Binary-1 20081220-23:12]/ etch contrib main
#deb cdrom:[Debian GNU/Linux 4.0 r6 _Etch_ - Official i386 NETINST Binary-1 20081220-23:12]/ etch contrib main

deb http://ftp.jp.debian.org/debian/ etch main
deb-src http://ftp.jp.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
deb http://security.debian.org/ stable/updates main contrib
deb-src http://security.debian.org/ stable/updates main contrib

deb http://ftp.jp.debian.org/debian/ testing main
deb-src http://ftp.jp.debian.org/debian/ testing main


「etch/updates」だと、apt.confでのAPT Priorityの設定がうまくいかなかった、
「stable/updates」に変更。


書式は、deb[-src] 「ベースURI」 「Debianバージョン」 「コンポーネント」

「deb」がバイナリ、「deb-src」がソースファイルです。
私の場合、ソースファイルはまず必要ないと思いますが、とりあえず入れてあります。

ベースURI
deb cdrom:、はインストール初期設定のAPTの設定において、cdromを選択したので記述されてました。
もう使わないので#でコメントアウトしてあります。

Debianバージョン
コードネーム(sarge、etchなど)もしくは、バージョン名(stable、testing、unstable)を指定できます。
インストールした現時点では、etchがstableなので、etchを指定すると安定版になるようです。

コンポーネント
・main/公式Debianパッケージ
・contrib/依存ファイルがDebianガイドラインに沿ってない
・non-free/このパッケージ自体も再配布できない
まず再配布など考えてないので、、特に気にせずすべていれました。


パッケージ情報を取得
#apt-get update
パッケージ情報を各apt-lineから取得してきます。
testingを追加したら、「メモリ不足です」と言われたので、
/etc/apt/apt.confに「APT::Cache-Limit "50000000";」を記述したら無事すべて取得できました。

「ftp.jp.debian.org」の「etch」と、「security.debian.org」の「etch/updates」を追加して、
定期的に、「apt-get update」、「apt-get upgrade」をしておけばセキュリティが最新な状態で保てるようです。
私の場合、apt-lineに「testing」が入ってますが、apt.confでベースのDebianバージョンがstableになっています。