1020a203aSopenharmony_ci/* 2020a203aSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3020a203aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4020a203aSopenharmony_ci * you may not use this file except in compliance with the License. 5020a203aSopenharmony_ci * You may obtain a copy of the License at 6020a203aSopenharmony_ci * 7020a203aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8020a203aSopenharmony_ci * 9020a203aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10020a203aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11020a203aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12020a203aSopenharmony_ci * See the License for the specific language governing permissions and 13020a203aSopenharmony_ci * limitations under the License. 14020a203aSopenharmony_ci */ 15020a203aSopenharmony_ci 16020a203aSopenharmony_ci#include <fcntl.h> 17020a203aSopenharmony_ci#include "common_utils.h" 18020a203aSopenharmony_ci#include "file_util.h" 19020a203aSopenharmony_ci 20020a203aSopenharmony_cinamespace OHOS { 21020a203aSopenharmony_cinamespace HiviewDFX { 22020a203aSopenharmony_cistatic bool g_isSelinuxEnabled = false; 23020a203aSopenharmony_civoid InitSeLinuxEnabled() 24020a203aSopenharmony_ci{ 25020a203aSopenharmony_ci constexpr uint32_t BUF_SIZE_64 = 64; 26020a203aSopenharmony_ci char buffer[BUF_SIZE_64] = {'\0'}; 27020a203aSopenharmony_ci FILE* fp = popen("getenforce", "r"); 28020a203aSopenharmony_ci if (fp != nullptr) { 29020a203aSopenharmony_ci fgets(buffer, sizeof(buffer), fp); 30020a203aSopenharmony_ci std::string str = buffer; 31020a203aSopenharmony_ci printf("buffer is %s\n", str.c_str()); 32020a203aSopenharmony_ci if (str.find("Enforcing") != str.npos) { 33020a203aSopenharmony_ci printf("Enforcing %s\n", str.c_str()); 34020a203aSopenharmony_ci g_isSelinuxEnabled = true; 35020a203aSopenharmony_ci } else { 36020a203aSopenharmony_ci printf("This isn't Enforcing %s\n", str.c_str()); 37020a203aSopenharmony_ci } 38020a203aSopenharmony_ci pclose(fp); 39020a203aSopenharmony_ci } else { 40020a203aSopenharmony_ci printf("fp == nullptr\n"); 41020a203aSopenharmony_ci } 42020a203aSopenharmony_ci system("setenforce 0"); 43020a203aSopenharmony_ci 44020a203aSopenharmony_ci constexpr mode_t defaultLogDirMode = 0770; 45020a203aSopenharmony_ci std::string path = "/data/test/log"; 46020a203aSopenharmony_ci if (!FileUtil::FileExists(path)) { 47020a203aSopenharmony_ci FileUtil::ForceCreateDirectory(path); 48020a203aSopenharmony_ci FileUtil::ChangeModeDirectory(path, defaultLogDirMode); 49020a203aSopenharmony_ci } 50020a203aSopenharmony_ci} 51020a203aSopenharmony_ci 52020a203aSopenharmony_civoid CancelSeLinuxEnabled() 53020a203aSopenharmony_ci{ 54020a203aSopenharmony_ci if (g_isSelinuxEnabled) { 55020a203aSopenharmony_ci system("setenforce 1"); 56020a203aSopenharmony_ci g_isSelinuxEnabled = false; 57020a203aSopenharmony_ci } 58020a203aSopenharmony_ci} 59020a203aSopenharmony_ci} // namespace HiviewDFX 60020a203aSopenharmony_ci} // namespace OHOS 61