Other

インストール

aptitude install sudo

設定方法

sudoの設定ファイルは/etc/sudoers

vi/emacsなどで直接書き込みは出来るけど、あまりおすすめしていない。出来たらvisudoなんかを使うと後で幸せになれるかもしれない。。。ほげ

制限

# Host alias specification

# User alias specification 

# Cmnd alias specification
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, /sbin/poweroff,
/sbin/reboot, /sbin/fastboot, /sbin/init

後あまり許可したくないコマンドなどをいれておく
Cmnd_Alias RM = /bin/rm, /bin/rmdir, /usr/sbin/visudo, 
/usr/sbin/dpkg-reconfigure, /bin/su

# User privilege specification
root    ALL=(ALL) ALL
hoge  ALL=(ALL) ALL, !SHUTDOWN, !RM

許可したくないコマンド

  1. halt/shutdown/poweroff -> 停止されるかもしれない
  2. reboot/fastbook -> 再起動されるかも?
  3. init -> プロセスの設定、其他もろもろ大事なのが変更、落されたら困るので。
  4. rm -> 設定を削除されたりするかもしれない
  5. rmdir -> 上記に同じ
  6. visudo -> sudoersファイルを変更されるかもしれない(これはemacs/nanoとか使われたらしょうがないんだけど。。)
  7. dpkg-reconfigure -> 設定を変更されるかもしれない
  8. su -> suになるとログが残らないし、どちらにせよ困る

エラー

[解決]sudo: timestamp too far in the future:

と出たらman sudoをしてみる。それでsudo -kをするとよさげ。。。とあるんだけど、全然言う事聞いてくれない

googleで検索したら、sudo -Kを二回すると直る。。。とあるんだけど、

aya@comuro:~$ sudo -K
sudo: timestamp too far in the future: Jan 29 03:24:52 2008
aya@comuro:~$ sudo -K
sudo: timestamp too far in the future: Jan 29 03:24:52 2008

うむむ、と思っていたんだけど、以下をやった後にsudo -Kをしたら直った。

aya@comuro:~$ sudo -l
sudo: timestamp too far in the future: Jan 29 03:24:52 2008

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:*****

なぜだろう?? 取り合えず他のオプションを使ってみる、という事だな。

その他の解決方法は

su

でrootになって /var/run/sudo/ユーザー名のフォルダーを消すとよい

man sudoには以下のように書いてある

      -k  -k (kill) オプションが指定されると、 sudo は有効期間を紀元年
          (epoch) に設定することで、ユーザのタイムスタンプを無効にする。次回
          sudo を実行するときは、パスワードが必要とされる。このオプションには
          パスワードが必要ない。ユーザが .logout ファイルで sudo 権限を取り消
          すことができるように追加された。
      -K  -K (sure kill) オプションが指定されると、 sudo は ユーザのタイムス
          タンプを完全に削除する。このオプションにはパスワードが必要ない。

後これは読んどくべきだな

sudo はタイムスタンプディレクトリ (デフォルトでは /var/run/sudo) の所有者をチェックし、所有者が root で、かつ root のみの書き込み属性でない場合、ディレクトリの中身を無視する。 root 以外のユーザでも chown(2) を使って自分のファイルを他人に渡せるようなシステムでは、タイムスタンプディレクトリが全てのユーザに書き込み可能なディレクトリ (例えば、/tmp) である場合、ユーザが sudo の実行前にタイムスタンプディレクトリを作成できてしまう。しかし sudo はディレクトリと中身の所有者とアクセス権をチェックするので、受けるダメージとしては「隠し」ファイルをタイムスタンプディレクトリに入れられるだけである。タイムスタンプディレクトリを root の所有にして、他のユーザからはアクセス不可能としてしまえば、そこにファイルを置いたユーザはファイルを取り出せなくなるので、こういったことは起こりづらい。この問題を避けるには、全てのユーザからは書き込めないディレクトリ (例えば、/var/adm/sudo) をタイムスタンプディレクトリとして使うか、システムのスタートアップファイルで /var/run/sudo を適切な所有者 (root)とアクセス権 (0700) で作成すればよい。

sudo は、遠い未来の時刻になっているタイムスタンプのセットを受け付けない。 current_time + 2 * TIMEOUT より先の時刻になっているタイムスタンプは無視され、sudo はログに記録を残して警告を出す。これにより、ユーザによるファイル譲渡が可能なシステム上で、ユーザが偽の日付でタイムスタンプを作成するのを防ぐ。


Last-modified: 2012-03-12 (月) 17:05:30 (166d)