Hatena::ブログ(Diary)

hogehoge @teramako RSSフィード

 

2013-05-14

Firefox 21 個人的まとめ

ちょっとフライング気味だけど

WebPlatform 系

Firefox 内部

etc

  • windowオブジェクトへnumericなプロパティ追加禁止 (Bug 828787)
    • window[0] = "OK"のようなことが出来なくなる
    • Strictモード中であっても、Object.definePropertyしてもエラーも出ず、プロパティ追加もされない(バグじゃね?)

参考情報

2013-05-09

v8エンジンの __proto__ が getter/setter になってた

28.0.1500.3 (Official Build 198635) dev-mで確認

以前確認した時はまだDataDescriptorだったから、また変更されたみたい。

> Object.getOwnPropertyDescriptor(Object.prototype,"__proto__")
Object {get: function, set: function, enumerable: false, configurable: true}

これで、Firefox, Chrome ともに Object.setPrototypeOf を作れる!....と思ったけど。

(function() {
  var protoSet = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
  Object.setPrototypeOf = function setPrototypeOf (aTarget, aProto) {
    protoSet.call(aTarget, aProto);
  };
})();

var o = {};
Object.setPrototypeOf(o, { foo: function(){ return "FOO"; } });

すると

TypeError: Generic use of __proto__ accessor not allowed

って例外が発生する。

ぐぬぬ...orz

2013-04-22

s-bit, sticky-bit について

今更ながら、基本のおさらい

s-bit (sビット)

setuid, setgid のことで、そのファイルのオーナーまたはグループの権限で実行する

ただし、各オーナーやグループに実行権が付いている、かつ、実行するユーザが実行できるパーミッション(オーナーかグループかその他か)になっている必要がある。

例えば、setuid が付いているがパーミッションが 744 、オーナーが root になっている場合、root 以外の他のユーザは実行できない。

ディレクトリの s-bit の場合
  • グループに付くs-bit (setgid) はその配下に作るファイルのグループが継承される。
  • ディレクトリを作ると、s-bit も継承する

sticky-bit (スティッキービット)

典型的な例は /tmp のディレクトリ

このsticky-bit が付いたディレクトリ配下に作ったファイルは作ったオーナーしか移動や削除などディレクトリのlinkを操作する行為は不可能になる

s-bit 同様パーミッションで許可されていないとlink操作は不能

chmod 等で指定する4桁目の8進数値

setuid4000 (1 << 2)
setgid2000 (1 << 1)
sticky-bit1000 (1 << 0)

ls -l で見た s, S, t, T

大文字になっていると、そこには実行権を表す x が付いていないことを示す

ls -l
-rwxr-Sr-x 2 teramako teramako 4.0K 2013-04-22 19:15 a
-rwS------ 2 teramako teramako 4.0K 2013-04-22 19:15 b

のような場合、ファイル a はグループに実行権が付いていない。8進数で 2745 の状態。

ファイル b は オーナーに実行権が付いていなくて、8進数で 4600 の状態。