これは WS_FTP での例です。
パーミッションを変更するファイルを選択し、右クリックメニューから"chmod"を選択します。
出てきたウィンドウから"Owner"の"Execute"にチェックを付けてください。
% chmod +x test.cgi ←属性の変更コマンド % ls -l test.cgi ←ファイル一覧表示コマンド -rwxr-xr-x 1 username users 4760 Jun 1 00:00 test.cgi ↑ ここに「x」が表示されていれば実行属性が付いています。 |
int lock(char* fname) ←ファイル名を与えると、そのファイルをロックして { ファイルハンドルを返す。すでに他からロックされ int fd; ていたときはブロックする。 if ((fd = open(fname, O_WRONLY)) < 0 && (fd = open(fname, O_CREAT|O_WRONLY, 0664)) < 0) { return -1; } flock(fd, LOCK_EX); lseek(fd, 0, SEEK_END); return fd; } int unlock(int fd) ←ロックしたときのファイルハンドルを与えると、 { ロックが解除される。この処理を行わなくても flock(fd, LOCK_UN); プログラム終了時に自動的に解除されます。。 return close(fd); } |
ここで、lock()に与えるファイル名は、データファイルの名前以外にするよう注意してください。
(CGI中からデータファイル自体が開けなくなってしまうため)
※ 一般的に、 link / unlink や open 関数を使って疑似的なロック処理を行われているCGIがありますが、
全く同時に link , open したときなどは、処理が固まってしまうことがあるためおすすめできません。
flock関数はこのために用意されている関数で、弊社のサーバ(OSはFreeBSD)で問題なく使用可能です。
AuthUserFile /home/ユーザー名/www/password.dat (DNSWebの場合は /home/1/ユーザー名/www/...) AuthGroupFile /dev/null AuthName "type your password" AuthType Basic <Limit GET POST> require valid-user </Limit> |
% htpasswd -c password.dat ユーザー名 ←新しくファイルを作る場合 (または ``/www/bin/htpasswd -c password.dat ユーザー名'' か ``/usr/local/bin/htpasswd -c password.dat ユーザー名'' 上のでエラーとなる場合はこちらをご利用ください) Adding password for test. New password: パスワード ←パスワードを入力 Re-type new password: パスワード ←確認のためもう一度 % htpasswd password.dat ユーザー名 ←すでにあるファイルにユーザーを追加する場合 Adding password for test. New password: パスワード ←パスワードを入力 Re-type new password: パスワード ←確認のためもう一度 |
詳しくは各種書籍やホームページなどをご参照ください。