From 02626dc6dcaa15e494a91d5470015cc7ad96e5eb Mon Sep 17 00:00:00 2001 From: fedir Date: Sat, 12 Apr 2025 18:16:09 +0200 Subject: [PATCH] Added cleveref and made better chapter description in the intro. --- accesscontrol.tex | 1 + approach.tex | 1 + implementation.tex | 1 + intro.tex | 3 ++- main-en.pdf | Bin 925271 -> 925738 bytes main-en.tex | 4 ++++ motivation.tex | 1 + 7 files changed, 10 insertions(+), 1 deletion(-) diff --git a/accesscontrol.tex b/accesscontrol.tex index d8d41e5..9a0df57 100644 --- a/accesscontrol.tex +++ b/accesscontrol.tex @@ -1,4 +1,5 @@ \chapter{Filesystem access control on Linux} +\label{access} \section{Traditional UNIX Filesystem Access Control Policies} diff --git a/approach.tex b/approach.tex index 138ef17..13e1380 100644 --- a/approach.tex +++ b/approach.tex @@ -1,4 +1,5 @@ \chapter{Interactively Controlled File System} +\label{icfs} In this section we present the solution developed as a part of this thesis, named \emph{Interactively Controlled File System} (or ICFS for short). diff --git a/implementation.tex b/implementation.tex index 9ee2f89..63c369b 100644 --- a/implementation.tex +++ b/implementation.tex @@ -1,4 +1,5 @@ \chapter{Implementation} +\label{impl} This chapter describes the software design and architecture, and the way that they help to solve the problem. The following sections describe the FUSE framework, different methods used to store access permissions of processes and the way the chosen architecture is designed to resist unauthorised access to the filesystem. diff --git a/intro.tex b/intro.tex index 647c983..1a90ece 100644 --- a/intro.tex +++ b/intro.tex @@ -1,4 +1,5 @@ \chapter*{Introduction} +\label{intro} \addcontentsline{toc}{chapter}{Introduction} \markboth{Introduction}{Introduction} @@ -24,4 +25,4 @@ Over the years, various mandatory access control (MAC) mechanisms, such as SELin In this thesis we introduce our approach to file system access control that empowers users to make real-time decisions about which processes or applications should have access to specific file system objects. By integrating an interactive decision-making layer into the file system, this solution aims to bridge the gap between the security benefits of MAC mechanisms and the simplicity required for widespread adoption. The proposed system delegates access control decisions to the user, enabling them to grant or deny access to individual processes or applications on a per-object basis. This approach not only enhances security but also maintains the flexibility and usability that are critical for user-oriented systems. -The rest of this thesis is organised as follows: Chapter 1 provides a review of existing access control mechanisms and their limitations. Chapter 2 outlines the design objectives, architecture, and the interactive component of the proposed file system layer. Chapter 3 describes the implementation process, including the tools and techniques used to develop the system. Chapter 4 presents experimental results and evaluates the performance and security benefits of the proposed solution. Finally, in Chapter 5 we describe some limitations of the proposed solution, and discuss the potential for further development. +The rest of this thesis is organised as follows: \Cref{access} and \cref{current} provides a review of existing access control mechanisms and their limitations. \Cref{icfs} outlines the design objectives, architecture, and the interactive component of the proposed file system layer. \Cref{impl} describes the implementation process, including the tools and techniques used to develop the system. Finally, in \cref{eval} we present experimental results, evaluate the performance, security benefits and limitations of the proposed solution, and discuss the potential for further development. diff --git a/main-en.pdf b/main-en.pdf index 798b2a5c1a24b020b2879c477d4672c22dc623d1..30ed4616a8bc04d0e9a145c55c4db1858cb3f213 100644 GIT binary patch delta 14907 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 bO&9*#0R+R7px_{}b93+lC@CeCr2zjACQr5P diff --git a/main-en.tex b/main-en.tex index 1b01809..8ba5703 100644 --- a/main-en.tex +++ b/main-en.tex @@ -13,6 +13,8 @@ %quotes \usepackage{dirtytalk} + + %zapnutie slovenskeho delenia slov %a automatickych nadpisov ako Obsah, Obrázok a pod. v slovencine %\usepackage[slovak]{babel} % vypnite pre prace v anglictine! @@ -41,6 +43,8 @@ % zrusime farebne ramiky okolo liniek aby pdf % vyzeralo rovnako ako tlacena verzia \usepackage[hidelinks,breaklinks]{hyperref} +%fancy references +\usepackage{cleveref} % ------------------- % --- REMOVE BEFORE PUBLISHING diff --git a/motivation.tex b/motivation.tex index be5d9d5..7fbc7b2 100644 --- a/motivation.tex +++ b/motivation.tex @@ -1,6 +1,7 @@ \chapter{Current solutions, and why they won't suffice} +\label{current} \section{MAC mechanisms}