FreeBSD Daily Topics
2011年9月8日 Capsicumを知る - ケーパビリティを取得するcap_new(2) その2
この記事を読むのに必要な時間:およそ 0.5 分
9月末または10月のリリースが予定されているFreeBSD 9.
- How to use cap_
new(2)? では,
実際にcap_ new(2)で与えた権限以外の処理をさせてみます。次のように 「read-cap3. c」 ファイルを用意します。ケーパビリティを作成する段階で読み込みだけを許可しておき, ケーパビリティモードに入ってから書き込みをしてみます。 read-cap3.
cファイル #include
h> #include h> #include h> #include h> #include h> #include h> #include h> #include capability. h> int main(void) { int fd, cap, len; char bf[BUFSIZ], bf2[] = "a"; fd = open("COPYRIGHT", O_ RDWR); if (-1 == fd) err(EX_ NOPERM, "open error: %d", errno); // 読み込みだけを許可したケーパビリティを作成 cap = cap_ new(dup(fd), CAP_ READ | CAP_ SEEK); if (-1 == cap) err(EX_ NOPERM, "cap_ new error: %d", errno); close(fd); cap_ enter(); // 書きこんでみる len = write(cap, bf2, 1); if (-1 == len) err(EX_ NOPERM, "write error: %d", errno); return 0; } 次のように,
書き込みは許可されていないので処理できません。 % clang read-cap3.
c % ./ a. out a. out: write error: 93: Capabilities insufficient % この使い方だと既存のopen(2)時にリードオンリーの指定をするのとあまりかわりませんが,
基本的な使い方ということで紹介しておきました。次はもうちょっとCapsicumっぽい使い方を取り上げます。
バックナンバー
FreeBSD Daily Topics
- 2011年9月30日 FreeBSD 1.x系とFreeBSD 10.x系ダブルディジット問題について
- 2011年9月29日 FreeBSD 9.0-BETA3登場
- 2011年9月28日 FreeBSD 10.0-CURRENT登場,ベータ版は3の登場間もなく
- 2011年9月27日 ZFS活用シリーズ - より詳しい情報と説明
- 2011年9月22日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 修復編)
- 2011年9月21日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 状況調査編)
- 2011年9月20日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb版)
- 2011年9月16日 ZFS活用シリーズ - scrubで直らない問題の修正(アドホック版)
- 2011年9月15日 ZFS活用シリーズ - scrubを使う
- 2011年9月14日 Capsicumを知る - 積極的なセキュリティ強化