Files
openGauss-OM/script/base_utils/os/user_util.py
coolany eae422baf3 适配CM组件
Signed-off-by: coolany <kyosang@163.com>

support cgroup

追加合入
2022-03-05 18:51:52 +08:00

105 lines
3.2 KiB
Python

# -*- coding:utf-8 -*-
#############################################################################
# Portions Copyright (c) 2020 Huawei Technologies Co.,Ltd.
# Portions Copyright (c) 2007 Agendaless Consulting and Contributors.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# Description : env_util.py is utility for system user info.
#############################################################################
import os
import subprocess
import pwd
import grp
from gspylib.common.ErrorCode import ErrorCode
class UserUtil(object):
"""utility for system user info"""
@staticmethod
def check_user_exist(user):
"""
function : get user id
input : user
output : user id
"""
try:
pwd.getpwnam(user).pw_uid
except Exception as e:
raise Exception(ErrorCode.GAUSS_503["GAUSS_50300"] % user + "Detail msg: %s" % str(e))
@staticmethod
def getUserHomePath():
"""
Get home path of user
"""
# converts the relative path to an absolute path
cmd = "echo ~ 2>/dev/null"
(status, output) = subprocess.getstatusoutput(cmd)
if status != 0:
raise Exception(ErrorCode.GAUSS_502["GAUSS_50219"] % "user home")
return output
@staticmethod
def getUserInfo():
"""
function : Get user information
input : null
output : user_info
"""
user_info = {"uid": os.getuid(), "name": pwd.getpwuid(
os.getuid()).pw_name,
"gid": pwd.getpwuid(os.getuid()).pw_gid}
user_info["g_name"] = grp.getgrgid(user_info["gid"]).gr_name
return user_info
@staticmethod
def getGroupByUser(user):
"""
function : get group by user
input : user
output : group
"""
try:
group = grp.getgrgid(pwd.getpwnam(user).pw_gid).gr_name
except Exception as e:
raise Exception(ErrorCode.GAUSS_503["GAUSS_50300"] % user +
"Detail msg: %s" % str(e))
return group
@staticmethod
def getPathOwner(path_name):
"""
function : Get the owner user of path.
input : path_name
output : user and group
"""
user = ""
group = ""
# check path
if not os.path.exists(path_name):
return user, group
# get use and group information
try:
user = pwd.getpwuid(os.stat(path_name).st_uid).pw_name
group = grp.getgrgid(os.stat(path_name).st_gid).gr_name
return user, group
except Exception:
return "", ""
@staticmethod
def check_path_owner(path):
if os.path.exists(path) and os.stat(path).st_uid == 0:
raise Exception(ErrorCode.GAUSS_512["GAUSS_51251"] % path)