14.11 Îļþϵͳ·ÃÎÊ¿ØÖƱí

×÷Õß Tom Rhodes.

¡¡¡¡ÓëÎļþϵͳÔÚÆäËû·½ÃæµÄ¼ÓÇ¿£¬ Èç¿ìÕÕµÈÒ»µÀ£¬ FreeBSD ÌṩÁËͨ¹ýÎļþϵͳ·ÃÎÊ¿ØÖƱí (ACL) ʵÏֵݲȫ»úÖÆ¡£

¡¡¡¡·ÃÎÊ¿ØÖƱíÒԸ߶ȼæÈÝ (POSIX®.1e) µÄ·½Ê½À©Õ¹Á˱ê×¼µÄ UNIX® ȨÏÞÄ£ÐÍ¡£ ÕâÒ»ÌØÐÔʹµÃ¹ÜÀíÔ±Äܹ»ÀûÓÃÆäÓÅÊÆÉè¼Æ¸üΪ¸´ÔӵݲȫģÐÍ¡£

¡¡¡¡Èç¹ûÏëΪ UFS ÎļþϵͳÆôÓà ACL Ö§³Ö£¬ ÔòÐèÒªÌí¼ÓÏÂÁÐÑ¡Ï

options UFS_ACL

¡¡¡¡²¢ÖØÐ±àÒëÄںˡ£ Èç¹ûûÓн«Õâ¸öÑ¡Ïî±àÒë½øÄںˣ¬ ÔòÔÚ¹Ò½ÓÖ§³Ö ACL µÄÎļþϵͳʱ½«»áÊÕµ½¾¯¸æ¡£ Õâ¸öÑ¡ÏîÔÚ GENERIC ÄÚºËÖÐÒѾ­°üº¬ÁË¡£ ACL ÒÀÀµÓÚÔÚÎļþϵͳÉÏÆôÓÃÀ©Õ¹ÊôÐÔ¡£ ÔÚÐÂÒ»´úµÄ UNIX Îļþϵͳ£¬ UFS2 ÖÐÄÚ½¨ÁËÕâÖÖÖ§³Ö¡£

×¢Òâ: ÔÚ UFS1 ÉÏÅäÖÃÀ©Õ¹ÊôÐÔÐèÒª±È UFS2 ¸ü¶àµÄ¹ÜÀí¿ªÏú¡£ ¶øÇÒ£¬ ÔÚ UFS2 ÉϵÄÀ©Õ¹ÊôÐÔµÄÐÔÄÜÒ²Óм«´óµÄÌá¸ß¡£ Òò´Ë£¬ Èç¹ûÏëҪʹÓ÷ÃÎÊ¿ØÖÆ±í£¬ ÍÆ¼öʹÓà UFS2 ¶ø²»ÊÇ UFS1¡£

¡¡¡¡ACL ¿ÉÒÔÔÚ¹Ò½Óʱͨ¹ýÑ¡Ïî acls À´Æô¶¯£¬ Ëü¿ÉÒÔ¼ÓÈë /etc/fstab¡£ ÁíÍ⣬ Ò²¿ÉÒÔͨ¹ýʹÓà tunefs(8) Ð޸ij¬¼¶¿éÖÐµÄ ACL ±ê¼ÇÀ´³Ö¾ÃÐÔµØÉèÖÃ×Ô¶¯µÄ¹Ò½ÓÊôÐÔ¡£ Ò»°ã¶øÑÔ£¬ ºóÒ»ÖÖ·½·¨ÊÇÍÆ¼öµÄ×ö·¨£¬ ÆäÔ­ÒòÊÇ£º

×¢Òâ: ¿ÉÒÔÐÞ¸Ä ACL ÐÐΪ£¬ ÒÔÔÊÐíÔÚûÓÐÖ´ÐÐÒ»´ÎÈ«Ð嵀 mount(8) µÄÇé¿öÏÂÆôÓÃËü£¬ µ«ÎÒÃÇÈÏΪ£¬ ²»¹ÄÀøÔÚδÆôÓà ACL ʱÕâô×öÊÇÓбØÒªµÄ£¬ ÒòΪÈç¹ûÆôÓÃÁË ACL£¬ È»ºó¹ØµôËü£¬ È»ºóÔÚûÓÐË¢ÐÂÀ©Õ¹ÊôÐÔµÄÇé¿öÏÂÖØÐÂÆôÓÃËüÊǺÜÈÝÒ×Ôì³ÉÎÊÌâµÄ¡£ Ò»°ã¶øÑÔ£¬ Ò»µ©ÆôÓÃÁËÎļþϵͳµÄ ACL ¾Í²»Ó¦¸ÃÔٹصôËü£¬ ÒòΪ´ËʱµÄÎļþϵͳµÄ±£»¤´ëÊ©¿ÉÄܺÍÓû§ËùÆÚ´ýµÄÑù×Ó²»ÔÙ¼æÈÝ£¬ ¶øÖØÐÂÆôÓà ACL ½«ÖØÐ°ÑÏÈǰµÄ ACL ¸½×ŵ½ÎļþÉÏ£¬ ¶øÓÉÓÚËüÃǵÄȨÏÞ·¢ÉúÁ˱仯£¬ ¾ÍºÜ¿ÉÄÜÔì³ÉÎÞ·¨Ô¤ÆÚµÄÐÐΪ¡£

¡¡¡¡Ôڲ鿴Ŀ¼ʱ£¬ ÆôÓÃÁË ACL µÄÎļþ½«ÔÚͨ³£µÄÊôÐÔºóÃæÏÔʾ + (¼ÓºÅ)¡£ ÀýÈ磺

drwx------  2 robert  robert  512 Dec 27 11:54 private
drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

¡¡¡¡ÕâÀïÎÒÃÇ¿´µ½ÁË directory1¡¢ directory2£¬ ÒÔ¼° directory3 Ŀ¼ʹÓÃÁË ACL¡£ ¶ø public_html ÔòûÓС£

14.11.1 ʹÓà ACL

¡¡¡¡Îļþϵͳ ACL ¿ÉÒÔʹÓà getfacl(1) ¹¤¾ßÀ´²é¿´¡£ ÀýÈ磬 Èç¹ûÏë²é¿´ test µÄ ACL ÉèÖ㬠ËùÓõÄÃüÁîÊÇ£º

% getfacl test
        #file:
        #owner:1001
        #group:1001
        user::rw-
        group::r--
        other::r--

¡¡¡¡ÒªÐÞ¸ÄÕâ¸öÎļþÉ쵀 ACL ÉèÖ㬠ÔòÐèҪʹÓà setfacl(1) ¹¤¾ß¡£ ÀýÈ磺

% setfacl -k test

¡¡¡¡-k ²ÎÊý½«°ÑËùÓе±Ç°¶¨ÒåµÄ ACL ´ÓÎļþ»òÎļþϵͳÖÐɾ³ý¡£ Ò»°ãÀ´ËµÓ¦¸ÃʹÓà -b ÒòΪËü»á±£³ÖÈà ACL Õý³£¹¤×÷µÄÄÇЩÏî²»±ä¡£

% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

¡¡¡¡ÔÚÇ°ÃæµÄÃüÁîÖУ¬ -m Ñ¡Ïî±»ÓÃÀ´ÐÞ¸ÄĬÈ쵀 ACL Ïî¡£ÓÉÓÚÒѾ­±»ÏÈǰµÄÃüÁî ɾ³ý£¬Òò´ËûÓÐÔ¤Ïȶ¨ÒåµÄÏÓÚÊÇĬÈϵÄÑ¡Ïî±»»Ö¸´£¬²¢¸½¼ÓÉÏÖ¸¶¨µÄÑ¡Ïî¡£ ÇëСÐĵؼì²é£¬Èç¹ûÄú¼ÓÈëÁËÒ»¸ö²»´æÔÚµÄÓû§»ò×飬ÄÇô½«»áÔÚ stdout µÃµ½Ò»Ìõ ¡°Invalid argument¡± µÄ´íÎóÌáʾ¡£

±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.