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 して、スーパーユーザにて実行したところ、無事シンボリックリンクにスティッキービットを立てることに成功した。


カテゴリ: [Program] - &trackback() - 2010年02月17日 11:34:17
名前: コメント:
#blognavi
最終更新:2010年02月17日 11:42
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。