gihyo.jp » ADMINISTRATOR STAGE » FreeBSD Daily Topics » 2011年9月8日 Capsicumを知る - ケーパビリティを取得するcap_new(2) その2

FreeBSD Daily Topics

2011年9月8日 Capsicumを知る - ケーパビリティを取得するcap_new(2) その2

この記事を読むのに必要な時間:およそ 0.5 分

9月末または10月のリリースが予定されているFreeBSD 9.0-RELEASEには新しいセキュリティ機能「Capsicum」が登場します。FDTではしばらく概念的な説明や,実際の実装例などを紹介して「Capsicum」の機能を紹介していきます。

How to use cap_new(2)?

では,実際にcap_new(2)で与えた権限以外の処理をさせてみます。次のように「read-cap3.c」ファイルを用意します。ケーパビリティを作成する段階で読み込みだけを許可しておき,ケーパビリティモードに入ってから書き込みをしてみます。

read-cap3.cファイル

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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っぽい使い方を取り上げます。

著者プロフィール

後藤大地(ごとうだいち)

ONGS Inc.代表取締役。FreeBSD committer。MYCOMジャーナルにおけるニュース執筆他,『改訂第二版 FreeBSDビギナーズバイブル』,『D言語パーフェクトガイド』,『UNIX本格マスター 基礎編~Linux&FreeBSDを使いこなすための第一歩~』など著書多数.

著書

  • UNIX本格マスター 基礎編 〜Linux&FreeBSDを使いこなすための第一歩〜

    UNIX本格マスター 基礎編 〜Linux&FreeBSDを使いこなすための第一歩〜

コメント

コメントの記入

Gihyo Digital Publishing

ピックアップ

サイバーエージェントを支える技術者たち

「アメーバブログ」などを展開するAmebaを運営するサイバーエージェントの技術者に,多くの魅力的なサービスを支える秘密を伺いました。

大規模ソーシャルサービス mixiのインフラ技術

日本最大のSNS「mixi」を支えるべく活躍するエンジニアが,日々の運用にまつわるさまざまなできごとを紹介します。

Silverlight業務アプリケーションの画面遷移と画面レイアウト

Silverlightで業務アプリケーションを開発する際の画面遷移と画面レイアウト設計のポイントについて解説します。

エンジニアパワーアップ講座 ~システム基盤を活用するための基礎知識~

イマドキのエンジニアに要求されるさまざまな知識や能力。これらを効率よくキャッチアップしていくヒントをいろいろな視点から取り上げます。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた情報や魅力を多角的に紹介します。

その他の連載

オープンソースの電子書籍管理ソフト「Calibre」を使いこなそう!

Calibreはオープンソースの電子書籍管理ツールです。本連載ではCalibreを使って,電子書籍の面白さを説明していきます。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

こんな夜中にOpenFlowでネットワークをプログラミング!

ネットワークは受け身でしか利用できないイメージが定着していると思いますが,次世代ネットワーク制御技術「OpenFlow」の登場により状況が変化しつつあります。本連載では,OpenFlowでネットワークをプログラミングしていきます!

サイバーエージェントを支える技術者たち

「アメーバブログ」や,「アメーバピグ」など,よく知られたソーシャルサービスを展開するインターネットサービス「Ameba」を運営する(株)サイバーエージェントの技術者に,数多くの魅力的なサービスを支える秘密を伺いました。

本格派エンジニアの工具箱

アプリケーションの開発効率を向上させるためには,自身のコーディング能力を向上させるのと同時に,開発をサポートするツールやライブラリ,フレームワークを適切に使いこなすことが重要です。この連載では,アプリケーション開発をサポートするさまざまなツールについて,使い方を交えながら紹介していきます。

R&Dトレンドレポート

研究開発部署でWeb開発をベースに新しい技術と向き合う筆者が,トレンド技術について技術概要から実用例,そして今後の展望を経験をまじえてわかりやすく説明します。

Androidケータイの歩き方

今回から装いも新たに「Androidケータイの歩き方」が始まります。Android元年と予想される2011年に向けて準備していきましょう。

PhoneGapで手軽にiPhone/Androidアプリを作ろう

PhoneGapは,HTML5+CSS+JavaScriptのみでiPhoneやAndrodのネイティブアプリケーションを開発することができるフレームワークです。このPhoneGapを使った,iOSやAndroidアプリケーションの開発方法を紹介します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT
  • CLOUD COMPUTING STAGE

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス