Cara untuk menyediakan kawalan capaian mandatori untuk menyekat kebenaran pengguna pada fail dan direktori
Dalam sistem pengendalian, kawalan capaian mandatori (Kawalan Capaian Mandatori, MAC) ialah mekanisme keselamatan yang digunakan untuk menyekat kebenaran capaian pengguna pada fail dan direktori. Berbanding dengan mekanisme kawalan capaian biasa, seperti Discretionary Access Control (DAC), kawalan capaian mandatori menyediakan dasar kawalan capaian yang lebih ketat untuk memastikan bahawa hanya pengguna dengan kebenaran yang sepadan boleh mengakses fail dan direktori.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan kaedah kawalan capaian mandatori biasa - Kawalan Akses Berasaskan Label (LBAC) untuk melaksanakan kawalan capaian kepada fail dan direktori. Di bawah ialah contoh kod yang menunjukkan cara menyekat akses pengguna kepada fail dengan menetapkan label.
Pertama, kita perlu mencipta sistem tag untuk menetapkan tag yang sepadan kepada fail dan pengguna. Label biasanya termasuk dua bahagian: label objek dan label subjek, yang masing-masing mewakili tahap keselamatan fail dan pengguna. Dalam contoh ini, kami menggunakan tiga tahap keselamatan yang berbeza: "RENDAH", "SEDERHANA" dan "TINGGI".
class LabelSystem: def __init__(self): self.labels = {} def assign_label(self, obj, label): self.labels[obj] = label def get_label(self, obj): return self.labels.get(obj) def check_permission(self, user_label, obj_label): if user_label <= obj_label: return True else: return False
Seterusnya, kami mencipta sistem fail khusus untuk melaksanakan kawalan capaian mandatori pada fail dan direktori. Dalam sistem fail ini, setiap fail dan direktori mempunyai pengecam unik dan label yang sepadan.
class FileSystem: def __init__(self): self.files = {} def create_file(self, name): file = File(name) self.files[file] = Label("LOW") def create_directory(self, name): directory = Directory(name) self.files[directory] = Label("LOW") def get_file(self, name): for file in self.files: if file.name == name: return file return None def set_label(self, obj, label): if obj in self.files: self.files[obj] = Label(label) def get_label(self, obj): return self.files.get(obj) def check_permission(self, user, obj): user_label = self.get_label(user) obj_label = self.get_label(obj) if user_label and obj_label: return LabelSystem().check_permission(user_label, obj_label) else: return False class File: def __init__(self, name): self.name = name class Directory: def __init__(self, name): self.name = name class Label: def __init__(self, level): self.level = level
Akhir sekali, kita boleh menggunakan kod di atas untuk mencipta sistem fail dan menetapkan label bagi fail dan direktori yang sepadan. Kemudian, anda boleh menentukan sama ada pengguna mempunyai kebenaran untuk mengakses fail berdasarkan teg pengguna dan teg fail tersebut.
if __name__ == "__main__": file_system = FileSystem() # 创建文件和目录 file_system.create_file("file1.txt") file_system.create_directory("dir1") # 设置文件和目录的标签 file_system.set_label(file_system.get_file("file1.txt"), "MEDIUM") file_system.set_label(file_system.get_file("dir1"), "HIGH") # 判断用户权限 user_label = Label("LOW") print(file_system.check_permission(user_label, file_system.get_file("file1.txt"))) # True print(file_system.check_permission(user_label, file_system.get_file("dir1"))) # False
Melalui contoh kod di atas, kita dapat melihat cara menggunakan kawalan akses mandatori berasaskan tag untuk menyekat akses pengguna kepada fail dan direktori. Dengan menetapkan label tahap keselamatan yang berbeza, kawalan akses yang lebih terperinci boleh dicapai untuk melindungi keselamatan data sensitif. Sebagai mekanisme keselamatan lanjutan, kawalan capaian mandatori boleh membantu kami membina sistem yang lebih selamat dalam aplikasi praktikal.
Atas ialah kandungan terperinci Cara menetapkan kawalan akses mandatori untuk menyekat kebenaran pengguna pada fail dan direktori. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!