Compare commits
No commits in common. "560bf8a7e0f78575d459223027f707f55584be65" and "c705f9adcaba2e9d80e37d58f10289f6df48180b" have entirely different histories.
560bf8a7e0
...
c705f9adca
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
./build/*
|
|
21
Makefile
21
Makefile
@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
CC := gcc
|
|
||||||
CXX := g++
|
|
||||||
|
|
||||||
O_LDFLAGS :=
|
|
||||||
O_CFLAGS := -O3
|
|
||||||
|
|
||||||
O_LDFLAGS_DEBUG :=
|
|
||||||
O_CFLAGS_DEBUG := -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Wno-unused -Weffc++
|
|
||||||
|
|
||||||
I_LDFLAGS := -lfuse3 -pthread
|
|
||||||
I_CFLAGS := -I/usr/include/fuse -D_FILE_OFFSET_BITS=64
|
|
||||||
|
|
||||||
SOURCES_DIR := ./sources
|
|
||||||
BUILD_DIR := ./build
|
|
||||||
|
|
||||||
build: $(SOURCES_DIR)/main.cpp
|
|
||||||
$(CXX) $(O_CFLAGS) $(I_CFLAGS) $(SOURCES_DIR)/main.cpp $(O_LDFLAGS) $(I_LDFLAGS) -o $(BUILD_DIR)/icfs
|
|
||||||
|
|
||||||
dev-build: $(SOURCES_DIR)/main.cpp
|
|
||||||
$(CXX) $(O_CFLAGS_DEBUG) $(I_CFLAGS) $(SOURCES_DIR)/main.cpp $(O_LDFLAGS_DEBUG) $(I_LDFLAGS) -o $(BUILD_DIR)/icfs
|
|
30
README.md
30
README.md
@ -1,30 +1,20 @@
|
|||||||
# ICFS -- Interactively Controlled File System
|
# ICFS -- Interactively Controlled File System.
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
Traditional access control mechanisms in operating systems allow the same level
|
Traditional access control mechanisms in operating systems allow the same level of access to all processes running on behalf of the same user. This typically enables malicious processes to read and/or modify all data accessible to the user running a vulnerable application. It can be dealt using various mandatory access control mechanisms, but these are often complicated to configure and are rarely used in common user oriented scenarios. This thesis focuses on design and implementation of a filesystem layer which delegates the decision to allow or deny access to a filesystem object by a specific process to the user.
|
||||||
of access to all processes running on behalf of the same user. This typically
|
|
||||||
enables malicious processes to read and/or modify all data accessible to the
|
|
||||||
user running a vulnerable application. It can be dealt using various mandatory
|
|
||||||
access control mechanisms, but these are often complicated to configure and are
|
|
||||||
rarely used in common user oriented scenarios. This thesis focuses on design
|
|
||||||
and implementation of a file system layer which delegates the decision to allow
|
|
||||||
or deny access to a file system object by a specific process to the user.
|
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
|
* analyse the problem and design a solution
|
||||||
- Analyze the problem and design a solution
|
* implement the solution using the FUSE framework
|
||||||
- Implement the solution using the FUSE framework
|
* test the solution and demonstrate its benefits
|
||||||
- Test the solution and demonstrate its benefits
|
|
||||||
|
|
||||||
## Docs
|
## Docs
|
||||||
|
* [Initial idea and motivation](./docs/bc-thesis-idea.md)
|
||||||
- [Initial idea and motivation](./docs/bc-thesis-idea.md)
|
* [Some identified issues](./docs/bc-thesis-problems.md)
|
||||||
- [Some identified issues](./docs/bc-thesis-problems.md)
|
* [Formal specification](./docs/bc-thesis-specs.md)
|
||||||
- [Formal specification](./docs/bc-thesis-specs.md)
|
|
||||||
|
|
||||||
## Credit
|
## Credit
|
||||||
|
|
||||||
_Student:_ Fedir Kovalov
|
*Student:* Fedir Kovalov
|
||||||
|
|
||||||
_Supervisor:_ RNDr. Jaroslav Janáček, PhD.
|
*Supervisor:* RNDr. Jaroslav Janáček, PhD.
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
|
|
||||||
#define FUSE_USE_VERSION 31
|
|
||||||
|
|
||||||
#include <fuse3/fuse.h>
|
|
||||||
|
|
||||||
static void *hello_init(struct fuse_conn_info *conn, struct fuse_config *cfg) {
|
|
||||||
(void)conn;
|
|
||||||
cfg->kernel_cache = 1;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct fuse_operations hello_oper = {
|
|
||||||
.init = hello_init,
|
|
||||||
};
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = fuse_main(argc, argv, &hello_oper, NULL);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user