Grant all privileges to programs with "User" and "System" Smack labels
[platform/core/security/security-manager.git] / policy / security-manager-policy-reload
1 #!/bin/sh -e
2
3 USERTYPE_POLICY_PATH=/usr/share/security-manager/policy
4
5 # Create default buckets
6 while read bucket default_policy
7 do
8     # Reuse the primary bucket for PRIVACY_MANAGER bucket
9     [ "$bucket" = "PRIVACY_MANAGER" ] && bucket=""
10     cyad --set-bucket="$bucket" --type="$default_policy"
11 done <<END
12 PRIVACY_MANAGER DENY
13 ADMIN NONE
14 MAIN DENY
15 MANIFESTS DENY
16 END
17
18 # Link buckets together
19 while read bucket_src bucket_dst
20 do
21     # Reuse the main bucket for PRIVACY_MANAGER bucket
22     [ "$bucket_src" = "PRIVACY_MANAGER" ] && bucket_src=""
23     cyad --set-policy --client="*" --user="*" --privilege="*" --type=BUCKET \
24         --bucket="$bucket_src" --metadata="$bucket_dst"
25 done <<END
26 MAIN MANIFESTS
27 PRIVACY_MANAGER MAIN
28 END
29
30 # Import user-type policies
31 find "$USERTYPE_POLICY_PATH" -name "usertype-*.profile" |
32 while read file
33 do
34     bucket="`echo $file | sed -r 's|.*/usertype-(.*).profile$|USER_TYPE_\U\1|'`"
35
36     # Re-create the bucket with empty contents
37     cyad --delete-bucket=$bucket || true
38     cyad --set-bucket=$bucket --type=DENY
39
40     # Link the bucket to ADMIN bucket
41     cyad --set-policy --client="*" --user="*" --privilege="*" --type=BUCKET \
42         --bucket="$bucket" --metadata="ADMIN"
43
44     grep -v ^\' $file |
45     while read app privilege
46     do
47         user="*"        # Match any user id
48         policy="0xFFFF" # ALLOW (FIXME: cyad should parse policy names, not numeric values)
49         printf '%s;%s;%s;%s;%s;\n' "$bucket" "$user" "$app" "$privilege" "$policy"
50     done |
51     cyad --set-policy --bulk=-
52 done
53
54 # Non-application programs get access to all privileges
55 for client in User System
56 do
57     cyad --set-policy --bucket=MAIN --client="$client" --user="*" --privilege="*" --type=ALLOW
58 done