「blog2010/2010年02月17日/HP-UXでシンボリックリンクにスティッキービットを立てる」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
#blognavi
UP-UX 11i(v2)の/bin や /lib のシンボリックリンクにはスティッキービットが立っている。自分ではないが誤ってこれを削除してしまい、chmod ではシンボリックリンクのアクセス権を変更出来なくて困った事態になった。
調べるとFreeBSDあたりにはシンボリックリンク自身のアクセス権を変更できる lchmod コマンドがあることが判明したが、これは UP-UX には存在しない。
しかし、lchmod コマンドの実装に使われている lchmod() システムコールは UP-UX にも存在する事が分かり、早速以下のプログラムを作成。
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main( int argc, char *argv[] )
{
/* 引数の数をチェック */
if( argc < 3 ){
printf("使用法: mylchmod numeric_mode file ...\n");
return 0;
}
/* モードの8進数表記チェック */
if( strspn(argv[1], "01234567") < strlen(argv[1]) ){
printf("mylchmod: モードが不適当です。\n");
return 0;
}
int idx;
unsigned int mode = 0;
/* 8進数表記のモードを整数値に変換 */
sscanf(argv[1], "%o", &mode);
/* 指定ファイルに対し順次lchmod()を実行 */
for( idx = 2; idx < argc; ++idx ){
if( lchmod(argv[idx], mode) ){
printf("%s: %s\n", argv[idx], strerror(errno));
}
}
return 0;
}
これを make して、スーパーユーザにて実行したところ、無事シンボリックリンクにスティッキービットを立てることに成功した。
#right{
カテゴリ: [[[Program>blog2010/カテゴリ/Program]]] - &trackback() - 2010年02月17日 11:34:17
}
#comment(nostyle,nsize8,size30)
#blognavi