יכולות אווירה

היכולות מאפשרות לתהליכי לינוקס להוריד את רוב ההרשאות דמויות השורש תוך שמירה על תת-קבוצת ההרשאות הדרושים להם כדי לבצע את תפקידם. ההטמעה המקורית של היכולות איפשרה לתהליכי fork+exec'd לרשת יכולות אלא אם כן לקבצים המבוצעים היו יכולות קבצים מוגדרות. יכולות קבצים, בתורן, מהוות סיכון אבטחה שכן כל תהליך המבצע קובץ עם יכולות קובץ יוכל להשיג את היכולות הללו.

יכולות Ambient מאפשרות לשירותי מערכת שהושקה על ידי init להגדיר יכולות בקבצי .rc שלהם, ולהביא את התצורה לקובץ בודד במקום לפצל את התצורה בקובץ fs_config.c . המשמעות היא שלכל שירות שהושק על ידי init, תוכל להשתמש בקובץ .rc המשויך לשירות כדי להגדיר יכולות עבור אותו שירות.

יכולות סביבה הן המנגנון המועדף להגדרת יכולות עבור שירותים שהושקו על ידי init (שיטה זו שומרת את כל ההיבטים של תצורת השירות בקובץ .rc יחיד). אנו ממליצים להשתמש ביכולות הסביבה במקום להגדיר יכולות של מערכת הקבצים באמצעות סעיף ה-caps בקבצי config.fs .

בעת הגדרת יכולות עבור שירותים שלא הופעלו על ידי init , המשך להגדיר את יכולות מערכת הקבצים באמצעות fs_config.c .

הפעלת יכולות סביבה

כדי לאפשר יכולות סביבה עבור שירות נתון, השתמש במילת המפתח capabilities ב-init. לפרטי שפת הפתיחה הנוכחית, עיין ב- init README.md .

לדוגמה, כדי לאפשר יכולות סביבה עבור שירות AOSP wificond , קובץ ה-.rc עבור שירות wificond מגדיר את המשתמש והקבוצות המתאימים ומעניק לשירות את היכולות שצוינו באמצעות מילת המפתח capabilities :

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

יישום התייחסות

יישום ההתייחסות הוא הקרנל המשותף של אנדרואיד https://android.googlesource.com/kernel/common/

טלאים נדרשים

התיקונים הנדרשים הועברו לאחור לכל ענפי הליבה הנפוצים של אנדרואיד הרלוונטיים.

התיקון העיקרי של יכולות הסביבה https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 הוחזר ב:

תיקון אבטחה קטן https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 הוחזר ב:

מַתַן תוֹקֵף

בדיקות יחידה ביונית כוללות בדיקות יחידה ליכולות הסביבה. מעבר לכך, שימוש במילת המפתח "יכולות" באנדרואיד init עבור שירות, ולאחר מכן בדיקה שהשירות מקבל את היכולות הצפויות יאפשרו בדיקת זמן ריצה של תכונה זו.