ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

UNIX Q&A集

 UNIXを使用した時のQ&Aについてまとめてあります。
 このQ&Aは、実際に発生した質問とその回答を掲載しています。


Q.CGIで、root権限を必要とするコマンドを動かしたいのですが?

 CGIは、webmasterユーザで動作するため、root権限を必要とするコマンドが使用できません。

A.setuid関数とsetuidビットを使うことで可能です。

 以下に、root_commandというroot権限を必要とするコマンドを、suid_commandという名前で、一般ユーザが実行できるようにする方法を説明します。
 まず、setuid関数を使用して、cプログラムを作成します。
 unix> vi suid_command

main()
{
    setuid(0);
    setgid(0);
    system("./root_command");
}
 これをコンパイルします。
 unix> cc -o suid_command suid_command.c
 ルート権限で以下のコマンドを実行します。
 所有者をrootに変更し、setuidビットを立てます。
 unix> su
 unix(root)> chown root suid_command
 unix(root)> chmod +s suid_command (chmod a=rsx suid_command)
 unix(root)> ls -l

-r-sr-s---   1 root     ash-g       31866 Apr 11 21:18 suid_command*
-r-x------   1 root     ash-g      317870 Apr 11 18:18 root_command*
 これで、同一グループ(ash-g)に属する一般ユーザが、root_commandを実行できるようになります。


Q.ハイフン(-)で始まるファイルを、削除したいのですが?

 気がつかないうちに、ハイフンで始まるファイルができていました。しかし、rmコマンドで、削除しようとしても、パラメータエラーとなり削除できません。

A.以下の2つの方法で削除できます。

 ハイフンで始まる場合は、シェルのパラメータの区切り記号とみなされてしまいます。

Q.2台のUNIXマシンで、対話できないでしょうか?

 電話がなかったり、電話が通じにくい場合など、EWSやUPを使用して情報をやりとりする場合があります。
 このような場合に、UNIXのネットワークを利用して情報のやりとりができれば便利なのですが。

A.writeコマンドを使用すれば可能です。

 サーバとなるUNIXマシンを決めて、そこにtelnetでログインします。

  write ユーザ名

と入力すれば、相手のウィンドウにメッセージを送れます。

 送信用と受信用に2つウィンドウを開くとより便利です。
 また、同一ユーザが2人ログインしていたり、2つ以上のウィンドウを開いていた場合は、

  write ユーザ名 ターミナル名

と入力します。whoコマンドで、ターミナル名を調べることができます。
   以下に入力例を示します。

  unix> who
  joe   pts/1   9月30日 11時00分
  joe   pts/2   9月30日 12時00分
  unix> write joe pts/2

 相手が端末の前にいない場合は、

  「CTRL+G」と「リターン」

を入力すると、相手の端末のBEEP音を鳴らすことができます。

Q.ファイルの日付を変更できないでしょうか?

A.touchコマンドを使用すれば可能です。

 形式は、touch mmddhhmm[yy] filesです。
 以下に入力例を示します。

  unix> touch 09301100 *.html

Q.1週間以上前のファイルをまとめて削除したいのですが、どうすればいいでしょうか?

A.findコマンドを使用すれば簡単です。

 形式は、find 検索開始ディレクトリ名 -mtime +日数 -exec 実行するコマンド です。
 以下にカレントディレクトリ配下の1週間以上前のファイルを削除する場合の入力例を示します。

  unix> find . -mtime +7 -exec rm {} \;



Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp