トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Debian(Etch):VMware/2006-10-3

目次

sudo

参考

sudoでお固く楽々 - Linux Home Server Memo - 自宅サーバ
http://asshole.dip.jp/sudo.php

第5回 サービスをセキュアにするための利用制限(3)
〜管理者権限の制限のためのsuとsudoの基本〜
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html

第6回 特権ユーザーの安全性向上を行うsudoの設定例
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec06/unix_sec01.html

インストール

パッケージ確認

vm-etch:/home/goun# dpkg -l | grep sudo
vm-etch:/home/goun#
vm-etch:/home/goun# apt-cache show sudo
Package: sudo
Priority: optional
Section: admin
Installed-Size: 396
Maintainer: Bdale Garbee <bdale@gag.com>
Architecture: i386
Version: 1.6.8p12-4
Replaces: sudo-ldap
Depends: libc6 (>= 2.3.5-1), libpam0g (>= 0.76), libpam-modules
Conflicts: sudo-ldap
Filename: pool/main/s/sudo/sudo_1.6.8p12-4_i386.deb
Size: 161958
MD5sum: 55646a2041020875d97359084a191fde
SHA1: 1c4f6f72c477616400501e9d341ea35f51ad4b2b
SHA256: 89d312bd0a19e2f5888ea226c446936c4c1f11386d8ebfe59baea166ee27a296
Description: Provide limited super user privileges to specific users
 Sudo is a program designed to allow a sysadmin to give limited root
 privileges to users and log root activity.  The basic philosophy is to give
 as few privileges as possible but still allow people to get their work done.
 .
 This version is built with minimal shared library dependencies, use the
 sudo-ldap package instead if you need LDAP support.
Tag: admin::accounting, admin::logging, admin::login, admin::user-management, interface::co mmandline, role::sw:utility, security::authentication, use::login, use::monitor

apt-get install sudo

念のため、テスト

vm-etch:/home/goun#
vm-etch:/home/goun#
vm-etch:/home/goun# apt-get -s install sudo
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
  sudo
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
Inst sudo (1.6.8p12-4 Debian:testing)
Conf sudo (1.6.8p12-4 Debian:testing)
vm-etch:/home/goun#

本番インストール

vm-etch:/home/goun# apt-get install sudo
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
  sudo
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
162kB のアーカイブを取得する必要があります。
展開後に追加で 406kB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org etch/main sudo 1.6.8p12-4 [162kB]
162kB を 1s で取得しました (103kB/s)
未選択パッケージ sudo を選択しています。
(データベースを読み込んでいます ... 現在 27553 個のファイルとディレクトリがインストールされています。)
(.../sudo_1.6.8p12-4_i386.deb から) sudo を展開しています...
sudo (1.6.8p12-4) を設定しています ...
No /etc/sudoers found... creating one for you.

vm-etch:/home/goun#

パッケージのファイル構成確認

vm-etch:/home/goun# dpkg -L sudo
/.
/etc
/etc/pam.d
/etc/pam.d/sudo
/etc/init.d
/etc/init.d/sudo
/usr
/usr/bin
/usr/bin/sudoedit
/usr/bin/sudo
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/visudo.8.gz
/usr/share/man/man8/sudo.8.gz
/usr/share/man/man8/sudoedit.8.gz
/usr/share/man/man5
/usr/share/man/man5/sudoers.5.gz
/usr/share/doc
/usr/share/doc/sudo
/usr/share/doc/sudo/examples
/usr/share/doc/sudo/examples/sudoers
/usr/share/doc/sudo/OPTIONS
/usr/share/doc/sudo/BUGS
/usr/share/doc/sudo/TODO.gz
/usr/share/doc/sudo/UPGRADE
/usr/share/doc/sudo/TROUBLESHOOTING.gz
/usr/share/doc/sudo/HISTORY
/usr/share/doc/sudo/README
/usr/share/doc/sudo/changelog.gz
/usr/share/doc/sudo/README.Debian
/usr/share/doc/sudo/copyright
/usr/share/doc/sudo/RUNSON.gz
/usr/share/doc/sudo/PORTING.gz
/usr/share/doc/sudo/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/sudo
/usr/sbin
/usr/sbin/visudo
/usr/lib
/usr/lib/sudo
/usr/lib/sudo/sudo_noexec.so
/usr/lib/sudo/sudo_noexec.la
vm-etch:/home/goun#

設定

visudo

192.168.0.0/24からアクセスした一般ユーザgounにroot権限をあたえるよう設定

vm-etch:/home/goun# visudo

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification
Host_Alias LOCAL = 192.168.0.0/24

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
goun    LOCAL=(ALL) ALL

ps.
visudo で編集終了直後から設定有効となる。

動作確認

goun@vm-etch:~$ ifconfig -a
-bash: ifconfig: command not found
goun@vm-etch:~$
goun@vm-etch:~$ sudo
usage: sudo -K | -L | -V | -h | -k | -l | -v
usage: sudo [-HPSb] [-p prompt] [-u username|#uid]
            { -e file [...] | -i | -s | <command> }
goun@vm-etch:~$
goun@vm-etch:~$ sudo ifconfig -a

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C5:49:EF
          inet addr:192.168.0.3  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec5:49ef/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2096 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2324 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:372809 (364.0 KiB)  TX bytes:254038 (248.0 KiB)
          Interrupt:169 Base address:0x1400

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

goun@vm-etch:~$

vim

標準インストールされているviで日本語が化ける?

$ cat > hoge
あいうえお

$

$ vi hoge

\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa
~
~
~

ほらね。
化けてる・・・

$ which vi
/usr/bin/vi
$ ls -al /usr/bin/vi
lrwxrwxrwx 1 root root 20 2006-10-02 10:32 /usr/bin/vi -> /etc/alternatives/vi
$ ls -al /etc/alternatives/vi
lrwxrwxrwx 1 root root 12 2006-10-02 10:48 /etc/alternatives/vi -> /usr/bin/nvi

実態はnviでした。

vimインストールで回避できるか・・・

vim-tinyで代用可能?

前置き

vimがインストールされていないかチェックしてみると、

goun@vm-etch:~$ dpkg -l | grep vim
ii  vim-common               7.0-094+1             Vi IMproved - Common files
ii  vim-tiny                 7.0-094+1             Vi IMproved - enhanced vi editor - compact v
goun@vm-etch:~$

vim-tinyがインストールされてる。
vimと何が違うのかわからないけど、これが使えるのならそのまま使ってみよう。

update-alternatives --config vi

現在の設定確認

goun@vm-etch:~$ sudo update-alternatives --display vi
vi - status is auto.
 link currently points to /usr/bin/nvi
/usr/bin/nvi - priority 20
 slave vi.1.gz: /usr/share/man/man1/nvi.1.gz
/usr/bin/vim.tiny - priority 10
 slave vi.1.gz: /usr/share/man/man1/vim.1.gz
 slave vi.ru.KOI8-R.1.gz: /usr/share/man/ru.KOI8-R/man1/vim.1.gz
 slave vi.it.UTF-8.1.gz: /usr/share/man/it.UTF-8/man1/vim.1.gz
 slave vi.pl.UTF-8.1.gz: /usr/share/man/pl.UTF-8/man1/vim.1.gz
 slave vi.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
 slave vi.ru.UTF-8.1.gz: /usr/share/man/ru.UTF-8/man1/vim.1.gz
 slave vi.it.1.gz: /usr/share/man/it/man1/vim.1.gz
 slave vi.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
 slave vi.fr.UTF-8.1.gz: /usr/share/man/fr.UTF-8/man1/vim.1.gz
 slave vi.fr.ISO8859-1.1.gz: /usr/share/man/fr.ISO8859-1/man1/vim.1.gz
 slave vi.pl.ISO8859-2.1.gz: /usr/share/man/pl.ISO8859-2/man1/vim.1.gz
 slave vi.it.ISO8859-1.1.gz: /usr/share/man/it.ISO8859-1/man1/vim.1.gz
Current `best' version is /usr/bin/nvi.
goun@vm-etch:~$
goun@vm-etch:~$

nviからvim.tinyに変更する。

goun@vm-etch:~$ sudo update-alternatives --config vi

There are 2 alternatives which provide `vi'.

  Selection    Alternative
-----------------------------------------------
*+        1    /usr/bin/nvi
          2    /usr/bin/vim.tiny

Press enter to keep the default[*], or type selection number: 2
Using `/usr/bin/vim.tiny' to provide `vi'.
goun@vm-etch:~$
goun@vm-etch:~$ which vi
/usr/bin/vi
goun@vm-etch:~$ ls -al /usr/bin/vi
lrwxrwxrwx 1 root root 20 2006-10-02 10:32 /usr/bin/vi -> /etc/alternatives/vi
goun@vm-etch:~$ ls -al /etc/alternatives/vi
lrwxrwxrwx 1 root root 17 2006-10-04 08:06 /etc/alternatives/vi -> /usr/bin/vim.tiny
goun@vm-etch:~$

文字化けしないか確認

goun@vm-etch:~$ vi hoge
&#9618;~A~B&#9618;~A~D&#9618;~A~F&#9618;~A~H&#9618;~A~J
~
~

だめ。
化けます。

vimパッケージインストールで回避できるかやってみる。

結局、vimインストール

パッケージ確認

goun@vm-etch:~$ dpkg -l | grep vim
ii  vim-common               7.0-094+1             Vi IMproved - Common files
ii  vim-tiny                 7.0-094+1             Vi IMproved - enhanced vi editor - compact v
goun@vm-etch:~$
goun@vm-etch:~$
goun@vm-etch:~$ apt-cache show vim
Package: vim
Priority: optional
Section: editors
Installed-Size: 1408
Maintainer: Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
Architecture: i386
Version: 1:7.0-094+1
Replaces: vim-full (<< 1:6.4-001+3), vim-gnome (<< 1:6.4-001+3), vim-gtk (<< 1:6.4-001+3), vim-lesstif (<< 1:6.4-001+3), vim-perl (<< 1:6.4-001+3), vim-python (<< 1:6.4-001+3), vim-ruby (<< 1:6.4-001+3), vim-tcl (<< 1:6.4-001+3), vim-tiny (<< 1:6.4-001+3)
Provides: editor
Depends: vim-common (= 1:7.0-094+1), vim-runtime (= 1:7.0-094+1), libc6 (>= 2.3.6-6), libgpmg1 (>= 1.19.6-1), libncurses5 (>= 5.4-5)
Suggests: ctags, vim-doc, vim-scripts
Conflicts: vim-full (<< 1:6.4-001+3), vim-gnome (<< 1:6.4-001+3), vim-gtk (<< 1:6.4-001+3), vim-lesstif (<< 1:6.4-001+3), vim-perl (<< 1:6.4-001+3), vim-python (<< 1:6.4-001+3), vim-ruby (<< 1:6.4-001+3), vim-tcl (<< 1:6.4-001+3), vim-tiny (<< 1:6.4-001+3), vim-common (<< 1:6.4-001+3)
Filename: pool/main/v/vim/vim_7.0-094+1_i386.deb
Size: 744032
MD5sum: 8f98bfda932df24b3fc506636addee20
SHA1: f48702d483b105ea546d227af2b2a01c45237de7
SHA256: 9e953f0af08b2d679e9f20f8006e3e09fa9a485ecd462014dd9ff16ce01d9d8f
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
 .
 Many new features have been added: multi level undo, syntax
 highlighting, command line history, on-line help, filename
 completion, block operations, folding, Unicode support, etc.
 .
 This package contain a version of vim compiled with a rather
 standard set of features. See the other vim-* packages if you
 need more (or less).
Tag: devel::editor, interface::text-mode, role::sw:application, uitoolkit::ncurses, use::editing, works-with::text

goun@vm-etch:~$
goun@vm-etch:~$
goun@vm-etch:~$ apt-cache depends vim
vim
  依存: vim-common
  依存: vim-runtime
  依存: libc6
  依存: libgpmg1
  依存: libncurses5
  提案: <ctags>
    exuberant-ctags
  提案: vim-doc
  提案: vim-scripts
  競合: vim-full
  競合: vim-gnome
  競合: vim-gtk
  競合: vim-lesstif
  競合: vim-perl
  競合: vim-python
  競合: vim-ruby
  競合: vim-tcl
  競合: vim-tiny
  競合: vim-common
  置換: vim-full
  置換: vim-gnome
  置換: vim-gtk
  置換: vim-lesstif
  置換: vim-perl
  置換: vim-python
  置換: vim-ruby
  置換: vim-tcl
  置換: vim-tiny
goun@vm-etch:~$
goun@vm-etch:~$

apt-get install vim

年の為、テスト

goun@vm-etch:~$ sudo apt-get -s install vim
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下の特別パッケージがインストールされます:
  vim-runtime
提案パッケージ:
  ctags vim-doc vim-scripts
以下のパッケージが新たにインストールされます:
  vim vim-runtime
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 1 個。
Inst vim-runtime (1:7.0-094+1 Debian:testing)
Inst vim (1:7.0-094+1 Debian:testing)
Conf vim-runtime (1:7.0-094+1 Debian:testing)
Conf vim (1:7.0-094+1 Debian:testing)
goun@vm-etch:~$
goun@vm-etch:~$

本番インストール

goun@vm-etch:~$ sudo apt-get install vim
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下の特別パッケージがインストールされます:
  vim-runtime
提案パッケージ:
  ctags vim-doc vim-scripts
以下のパッケージが新たにインストールされます:
  vim vim-runtime
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 1 個。
7088kB のアーカイブを取得する必要があります。
展開後に追加で 23.5MB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://ftp.jp.debian.org etch/main vim-runtime 1:7.0-094+1 [6344kB]
取得:2 http://ftp.jp.debian.org etch/main vim 1:7.0-094+1 [744kB]
7088kB を 6s で取得しました (1090kB/s)
未選択パッケージ vim-runtime を選択しています。
(データベースを読み込んでいます ... 現在 27582 個のファイルとディレクトリがインストールされています。)
(.../vim-runtime_1%3a7.0-094+1_all.deb から) vim-runtime を展開しています...
未選択パッケージ vim を選択しています。
(.../vim_1%3a7.0-094+1_i386.deb から) vim を展開しています...
vim-runtime (7.0-094+1) を設定しています ...
vim (7.0-094+1) を設定しています ...

goun@vm-etch:~$

パッケージのファイル構成確認

goun@vm-etch:~$ dpkg -L vim
/.
/usr
/usr/bin
/usr/bin/vim.basic
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/vim
/usr/share/doc
/usr/share/doc/vim
goun@vm-etch:~$
goun@vm-etch:~$ dpkg -L vim-runtime
/.
/usr
/usr/bin
/usr/bin/vimtutor
/usr/share
/usr/share/consolefonts
/usr/share/vim
/usr/share/vim/addons
/usr/share/vim/addons/plugin
/usr/share/vim/addons/doc
/usr/share/vim/addons/doc/tags
/usr/share/vim/registry
/usr/share/vim/registry/matchit
/usr/share/vim/vim70
/usr/share/vim/vim70/doc
/usr/share/vim/vim70/doc/arabic.txt
:
/usr/share/man/ru.UTF-8
/usr/share/man/ru.UTF-8/man1
/usr/share/man/ru.UTF-8/man1/vimtutor.1.gz
/usr/share/doc
/usr/share/doc/vim-runtime
/usr/share/doc/vim-runtime/NEWS.Debian.gz
/usr/share/doc/vim-runtime/copyright
/usr/share/doc/vim-runtime/changelog.Debian.gz
/usr/share/vim/addons/plugin/matchit.vim
/usr/share/vim/addons/doc/matchit.txt
goun@vm-etch:~$

update-alternatives --config vi

goun@vm-etch:~$ sudo update-alternatives --display vi
vi - status is manual.
 link currently points to /usr/bin/vim.tiny
/usr/bin/nvi - priority 20
 slave vi.1.gz: /usr/share/man/man1/nvi.1.gz
/usr/bin/vim.tiny - priority 10
 slave vi.1.gz: /usr/share/man/man1/vim.1.gz
 slave vi.ru.KOI8-R.1.gz: /usr/share/man/ru.KOI8-R/man1/vim.1.gz
 slave vi.it.UTF-8.1.gz: /usr/share/man/it.UTF-8/man1/vim.1.gz
 slave vi.pl.UTF-8.1.gz: /usr/share/man/pl.UTF-8/man1/vim.1.gz
 slave vi.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
 slave vi.ru.UTF-8.1.gz: /usr/share/man/ru.UTF-8/man1/vim.1.gz
 slave vi.it.1.gz: /usr/share/man/it/man1/vim.1.gz
 slave vi.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
 slave vi.fr.UTF-8.1.gz: /usr/share/man/fr.UTF-8/man1/vim.1.gz
 slave vi.fr.ISO8859-1.1.gz: /usr/share/man/fr.ISO8859-1/man1/vim.1.gz
 slave vi.pl.ISO8859-2.1.gz: /usr/share/man/pl.ISO8859-2/man1/vim.1.gz
 slave vi.it.ISO8859-1.1.gz: /usr/share/man/it.ISO8859-1/man1/vim.1.gz
/usr/bin/vim.basic - priority 30
 slave vi.1.gz: /usr/share/man/man1/vim.1.gz
 slave vi.ru.KOI8-R.1.gz: /usr/share/man/ru.KOI8-R/man1/vim.1.gz
 slave vi.it.UTF-8.1.gz: /usr/share/man/it.UTF-8/man1/vim.1.gz
 slave vi.pl.UTF-8.1.gz: /usr/share/man/pl.UTF-8/man1/vim.1.gz
 slave vi.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
 slave vi.ru.UTF-8.1.gz: /usr/share/man/ru.UTF-8/man1/vim.1.gz
 slave vi.it.1.gz: /usr/share/man/it/man1/vim.1.gz
 slave vi.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
 slave vi.fr.UTF-8.1.gz: /usr/share/man/fr.UTF-8/man1/vim.1.gz
 slave vi.fr.ISO8859-1.1.gz: /usr/share/man/fr.ISO8859-1/man1/vim.1.gz
 slave vi.pl.ISO8859-2.1.gz: /usr/share/man/pl.ISO8859-2/man1/vim.1.gz
 slave vi.it.ISO8859-1.1.gz: /usr/share/man/it.ISO8859-1/man1/vim.1.gz
Current `best' version is /usr/bin/vim.basic.
goun@vm-etch:~$
goun@vm-etch:~$
goun@vm-etch:~$ sudo update-alternatives --config vi

There are 3 alternatives which provide `vi'.

  Selection    Alternative
-----------------------------------------------
          1    /usr/bin/nvi
*         2    /usr/bin/vim.tiny
 +        3    /usr/bin/vim.basic

Press enter to keep the default[*], or type selection number: 3
Using `/usr/bin/vim.basic' to provide `vi'.
goun@vm-etch:~$

念のため、リンク確認

goun@vm-etch:~$ ls -al /usr/bin/vi
lrwxrwxrwx 1 root root 20 2006-10-02 10:32 /usr/bin/vi -> /etc/alternatives/vi
goun@vm-etch:~$ ls -al /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 2006-10-04 08:23 /etc/alternatives/vi -> /usr/bin/vim.basic
goun@vm-etch:~$ ls -al /usr/bin/vim
vim        vim.basic  vim.tiny   vimdiff    vimtutor
goun@vm-etch:~$ ls -al /usr/bin/vim
vim        vim.basic  vim.tiny   vimdiff    vimtutor
goun@vm-etch:~$ ls -al /usr/bin/vim.basic
-rwxr-xr-x 1 root root 1382568 2006-09-10 19:27 /usr/bin/vim.basic
goun@vm-etch:~$ ls -al /usr/bin/vim
lrwxrwxrwx 1 root root 21 2006-10-02 10:48 /usr/bin/vim -> /etc/alternatives/vim
goun@vm-etch:~$ ls -al /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 2006-10-04 08:19 /etc/alternatives/vim -> /usr/bin/vim.basic
goun@vm-etch:~$

文字化けしないか確認

goun@vm-etch:~$ vi hoge
あいうえお
~
~

おっけー

最終更新時間:2006年10月03日 23時42分21秒