1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "utils.h"
17 #include "parameters.h"
18
19 namespace OHOS {
20 namespace EDM {
21 namespace TEST {
22 uint64_t Utils::selfTokenId_ = 0;
23 const std::string SET_EDM_SERVICE = "persist.edm.edm_enable";
24 const std::string EDM_MANAGE_DATETIME_PERMISSION = "ohos.permission.SET_TIME";
25 const std::string EDM_FACTORY_RESET_PERMISSION = "ohos.permission.FACTORY_RESET";
26 const std::string EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION = "ohos.permission.MANAGE_LOCAL_ACCOUNTS";
27 const std::string EDM_MANAGE_SECURE_SETTINGS_PERMISSION = "ohos.permission.MANAGE_SECURE_SETTINGS";
28 const std::string PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT = "ohos.permission.ENTERPRISE_SUBSCRIBE_MANAGED_EVENT";
29 const std::string PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN = "ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN";
30 const std::string PERMISSION_SET_ENTERPRISE_INFO = "ohos.permission.SET_ENTERPRISE_INFO";
31 const std::string PERMISSION_ACCESS_CERT_MANAGER_INTERNAL = "ohos.permission.ACCESS_CERT_MANAGER_INTERNAL";
32 const std::string PERMISSION_ACCESS_CERT_MANAGER = "ohos.permission.ACCESS_CERT_MANAGER";
33 const std::string PERMISSION_ACCESS_BLUETOOTH = "ohos.permission.ACCESS_BLUETOOTH";
34 const std::string PERMISSION_MANAGE_BLUETOOTH = "ohos.permission.MANAGE_BLUETOOTH";
35 const std::string PERMISSION_NETSYS_INTERNAL = "ohos.permission.NETSYS_INTERNAL";
36 const std::string PERMISSION_INSTALL_ENTERPRISE_NORMAL_BUNDLE = "ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE";
37 const std::string PERMISSION_INSTALL_ENTERPRISE_MDM_BUNDLE = "ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE";
38 const std::string PERMISSION_INSTALL_SELF_BUNDLE = "ohos.permission.INSTALL_SELF_BUNDLE";
39 const std::string PERMISSION_UNINSTALL_BUNDLE = "ohos.permission.UNINSTALL_BUNDLE";
40 const std::string PERMISSION_RUNNING_STATE_OBSERVER = "ohos.permission.RUNNING_STATE_OBSERVER";
41 const std::string PERMISSION_ENTERPRISE_MANAGE_SECURITY = "ohos.permission.ENTERPRISE_MANAGE_SECURITY";
42 const std::string PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH = "ohos.permission.ENTERPRISE_MANAGE_BLUETOOTH";
43 const std::string PERMISSION_ENTERPRISE_MANAGE_LOCATION = "ohos.permission.ENTERPRISE_MANAGE_LOCATION";
44 const std::string PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER = "ohos.permission.ACCESS_SCREEN_LOCK_INNER";
45 const std::string PERMISSION_REBOOT = "ohos.permission.REBOOT";
46 const std::string PERMISSION_MANAGE_APP_BOOT_INTERNAL = "ohos.permission.MANAGE_APP_BOOT_INTERNAL";
47 const std::string PERMISSION_CONNECTIVITY_INTERNAL = "ohos.permission.CONNECTIVITY_INTERNAL";
48 const std::string PERMISSION_MANAGE_USB_CONFIG = "ohos.permission.MANAGE_USB_CONFIG";
49 const std::string PERMISSION_STORAGE_MANAGER = "ohos.permission.STORAGE_MANAGER";
50 const std::string PERMISSION_MOUNT_UNMOUNT_MANAGER = "ohos.permission.MOUNT_UNMOUNT_MANAGER";
51 const std::string PERMISSION_GET_BUNDLE_INFO = "ohos.permission.GET_BUNDLE_INFO";
52 const std::string PERSIST_BLUETOOTH_CONTROL = "persist.edm.prohibit_bluetooth";
53 const std::string PERMISSION_ACCESS_USER_TRUSTED_CERT = "ohos.permission.ACCESS_USER_TRUSTED_CERT";
54 const std::string PERMISSION_ACCESS_USER_AUTH_INTERNAL = "ohos.permission.ACCESS_USER_AUTH_INTERNAL";
55 const std::string PERMISSION_SET_WIFI_INFO = "ohos.permission.SET_WIFI_INFO";
56 const std::string PERMISSION_GET_WIFI_INFO = "ohos.permission.GET_WIFI_INFO";
57 const std::string PERMISSION_MANAGE_WIFI_CONNECTION = "ohos.permission.MANAGE_WIFI_CONNECTION";
58 const std::string PERMISSION_MANAGE_SETTINGS = "ohos.permission.MANAGE_SETTINGS";
59 const std::string PERMISSION_MICROPHONE_CONTROL = "ohos.permission.MICROPHONE_CONTROL";
60 const std::string PERMISSION_NETWORK_POLICY_MANAGE = "ohos.permission.MANAGE_NET_STRATEGY";
61 const std::string PERMISSION_CAMERA = "ohos.permission.CAMERA";
62 const std::string PERMISSION_CAMERA_CONTROL = "ohos.permission.CAMERA_CONTROL";
63 const std::string PERMISSION_MANAGE_APP_KEEP_ALIVE_INTERNAL = "ohos.permission.MANAGE_APP_KEEP_ALIVE_INTERNAL";
64 const std::string PERMISSION_MANAGE_EDM_POLICY = "ohos.permission.MANAGE_EDM_POLICY";
65 const std::string PERMISSION_GET_TELEPHONY_STATE = "ohos.permission.GET_TELEPHONY_STATE";
66 const std::string PERMISSION_SET_TELEPHONY_STATE = "ohos.permission.SET_TELEPHONY_STATE";
67 const std::string PERMISSION_GET_NETWORK_STATE = "ohos.permission.GET_NETWORK_STATE";
68 const std::string PERMISSION_MANAGE_APN_SETTING = "ohos.permission.MANAGE_APN_SETTING";
69 const std::string PERMISSION_MANAGE_VPN = "ohos.permission.MANAGE_VPN";
ExecCmdSync(const std::string & cmd)70 void Utils::ExecCmdSync(const std::string &cmd)
71 {
72 FILE *fp = popen(cmd.c_str(), "r");
73 if (fp != nullptr) {
74 pclose(fp);
75 fp = nullptr;
76 }
77 }
78
SetNativeTokenTypeAndPermissions(const char * permissions[],int size)79 void Utils::SetNativeTokenTypeAndPermissions(const char* permissions[], int size)
80 {
81 uint64_t tokenId;
82 NativeTokenInfoParams infoInstance = {
83 .dcapsNum = 0,
84 .permsNum = size,
85 .aclsNum = 0,
86 .dcaps = nullptr,
87 .perms = permissions,
88 .acls = nullptr,
89 .aplStr = "system_basic",
90 };
91
92 infoInstance.processName = "edm";
93 tokenId = GetAccessTokenId(&infoInstance);
94 SetSelfTokenID(tokenId);
95 seteuid(ROOT_UID);
96 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
97 seteuid(EDM_UID);
98 }
99
SetEdmInitialEnv()100 void Utils::SetEdmInitialEnv()
101 {
102 selfTokenId_ = GetSelfTokenID();
103 const char* permissions[] = {
104 EDM_MANAGE_DATETIME_PERMISSION.c_str(),
105 EDM_FACTORY_RESET_PERMISSION.c_str(),
106 EDM_MANAGE_LOCAL_ACCOUNTS_PERMISSION.c_str(),
107 EDM_MANAGE_SECURE_SETTINGS_PERMISSION.c_str(),
108 PERMISSION_ENTERPRISE_SUBSCRIBE_MANAGED_EVENT.c_str(),
109 PERMISSION_MANAGE_ENTERPRISE_DEVICE_ADMIN.c_str(),
110 PERMISSION_SET_ENTERPRISE_INFO.c_str(),
111 PERMISSION_ACCESS_BLUETOOTH.c_str(),
112 PERMISSION_MANAGE_BLUETOOTH.c_str(),
113 PERMISSION_ACCESS_CERT_MANAGER_INTERNAL.c_str(),
114 PERMISSION_ACCESS_CERT_MANAGER.c_str(),
115 PERMISSION_NETSYS_INTERNAL.c_str(),
116 PERMISSION_INSTALL_ENTERPRISE_NORMAL_BUNDLE.c_str(),
117 PERMISSION_INSTALL_ENTERPRISE_MDM_BUNDLE.c_str(),
118 PERMISSION_INSTALL_SELF_BUNDLE.c_str(),
119 PERMISSION_UNINSTALL_BUNDLE.c_str(),
120 PERMISSION_RUNNING_STATE_OBSERVER.c_str(),
121 PERMISSION_ENTERPRISE_MANAGE_SECURITY.c_str(),
122 PERMISSION_ENTERPRISE_MANAGE_BLUETOOTH.c_str(),
123 PERMISSION_ENTERPRISE_MANAGE_LOCATION.c_str(),
124 PERMISSION_ENTERPRISE_ACCESS_SCREEN_LOCK_INNER.c_str(),
125 PERMISSION_REBOOT.c_str(),
126 PERMISSION_MANAGE_APP_BOOT_INTERNAL.c_str(),
127 PERMISSION_CONNECTIVITY_INTERNAL.c_str(),
128 PERMISSION_MANAGE_USB_CONFIG.c_str(),
129 PERMISSION_STORAGE_MANAGER.c_str(),
130 PERMISSION_MOUNT_UNMOUNT_MANAGER.c_str(),
131 PERMISSION_GET_BUNDLE_INFO.c_str(),
132 PERMISSION_ACCESS_USER_TRUSTED_CERT.c_str(),
133 PERMISSION_ACCESS_USER_AUTH_INTERNAL.c_str(),
134 PERMISSION_GET_WIFI_INFO.c_str(),
135 PERMISSION_SET_WIFI_INFO.c_str(),
136 PERMISSION_MANAGE_WIFI_CONNECTION.c_str(),
137 PERMISSION_MANAGE_SETTINGS.c_str(),
138 PERMISSION_MICROPHONE_CONTROL.c_str(),
139 PERMISSION_NETWORK_POLICY_MANAGE.c_str(),
140 PERMISSION_CAMERA.c_str(),
141 PERMISSION_CAMERA_CONTROL.c_str(),
142 PERMISSION_MANAGE_APP_KEEP_ALIVE_INTERNAL.c_str(),
143 PERMISSION_MANAGE_EDM_POLICY.c_str(),
144 PERMISSION_GET_TELEPHONY_STATE.c_str(),
145 PERMISSION_SET_TELEPHONY_STATE.c_str(),
146 PERMISSION_GET_NETWORK_STATE.c_str(),
147 PERMISSION_MANAGE_APN_SETTING.c_str(),
148 PERMISSION_MANAGE_VPN.c_str()
149 };
150 Utils::SetNativeTokenTypeAndPermissions(permissions, sizeof(permissions) / sizeof(permissions[0]));
151 seteuid(Utils::EDM_UID);
152 }
153
ResetTokenTypeAndUid()154 void Utils::ResetTokenTypeAndUid()
155 {
156 seteuid(Utils::ROOT_UID);
157 SetSelfTokenID(selfTokenId_);
158 }
159
IsOriginalUTEnv()160 bool Utils::IsOriginalUTEnv()
161 {
162 return Utils::ROOT_UID == geteuid() && selfTokenId_ == GetSelfTokenID();
163 }
164
GetEdmServiceState()165 bool Utils::GetEdmServiceState()
166 {
167 std::string edmParaValue = system::GetParameter("persist.edm.edm_enable", "false");
168 return edmParaValue == "true";
169 }
170
SetEdmServiceEnable()171 void Utils::SetEdmServiceEnable()
172 {
173 system::SetParameter(SET_EDM_SERVICE, "true");
174 }
175
SetEdmServiceDisable()176 void Utils::SetEdmServiceDisable()
177 {
178 system::SetParameter(SET_EDM_SERVICE, "false");
179 }
180
SetBluetoothEnable()181 void Utils::SetBluetoothEnable()
182 {
183 system::SetParameter(PERSIST_BLUETOOTH_CONTROL, "false");
184 }
185
SetBluetoothDisable()186 void Utils::SetBluetoothDisable()
187 {
188 system::SetParameter(PERSIST_BLUETOOTH_CONTROL, "true");
189 }
190 } // namespace TEST
191 } // namespace EDM
192 } // namespace OHOS
193