Compare commits

..

No commits in common. "77775e409762c8a317f9e0fe72d6af9399fd921a" and "7dac50e4d968624f2d151d127e127453ad3f3c62" have entirely different histories.

4 changed files with 13 additions and 17 deletions

View File

@ -26,8 +26,7 @@ Traditional access control mechanisms in operating systems allow the same level
## Installation ## Installation
- `make install` Currently, there is no installer implemented.
- Uninstall with `make uninstall`
## Usage ## Usage
@ -35,7 +34,7 @@ Traditional access control mechanisms in operating systems allow the same level
icfs <FUSE arguments> [target directory] [path to permanent permission database] icfs <FUSE arguments> [target directory] [path to permanent permission database]
``` ```
The filesystem will be mounted over the target directory, and ask user permission every time a file in that directory is opened. We highly recommend adding `-o default_permissions` to increase performance and add an additional security layer. If you have installed icfs along with `/etc/icfs` folder, you can create your permanent permission databases in this folder (you might want to do this, if your home folder does not have the "execute" permission for other users). The filesystem will be mounted over the target directory, and ask user permission every time a file in that directory is opened. We highly recommend adding `-o default_permissions` to increase performance and add an additional security layer.
### Development build ### Development build

View File

@ -7,10 +7,9 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#define YES 1 #define YES 0
#define NO 0 #define NO 1
#define PERM 2 #define PERM 2
#define TEMP 0
int exit_code = 0; int exit_code = 0;
gboolean is_permanent = false; gboolean is_permanent = false;
@ -21,7 +20,7 @@ static void positive_response(GtkWindow *window) {
fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer)); fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer));
exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox))) exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox)))
? YES | PERM ? YES | PERM
: YES | TEMP; : YES;
gtk_window_close(window); gtk_window_close(window);
} }
@ -29,7 +28,7 @@ static void negative_response(GtkWindow *window) {
fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer)); fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer));
exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox))) exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox)))
? NO | PERM ? NO | PERM
: NO | TEMP; : NO;
gtk_window_close(window); gtk_window_close(window);
} }

View File

@ -26,10 +26,9 @@
#include <sys/un.h> #include <sys/un.h>
#include <unistd.h> #include <unistd.h>
#define DIALOGUE_YES 1 #define DIALOGUE_YES 0
#define DIALOGUE_NO 0 #define DIALOGUE_NO 1
#define DIALOGUE_PERM 2 #define DIALOGUE_PERM 2
#define DIALOGUE_TEMP 0
pthread_mutex_t access_check_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t access_check_mutex = PTHREAD_MUTEX_INITIALIZER;
@ -147,7 +146,7 @@ struct dialogue_response ask_access(const char *filename,
if (dialogue_exit_code == (DIALOGUE_YES | DIALOGUE_PERM)) { if (dialogue_exit_code == (DIALOGUE_YES | DIALOGUE_PERM)) {
response.decision = ALLOW; response.decision = ALLOW;
} else if (dialogue_exit_code == DIALOGUE_YES | DIALOGUE_TEMP) { } else if (dialogue_exit_code == DIALOGUE_YES) {
response.decision = ALLOW_TEMP; response.decision = ALLOW_TEMP;
} else if (dialogue_exit_code == (DIALOGUE_NO | DIALOGUE_PERM)) { } else if (dialogue_exit_code == (DIALOGUE_NO | DIALOGUE_PERM)) {
response.decision = DENY; response.decision = DENY;

View File

@ -2,10 +2,9 @@
# fake-icfs_dialogue: script that mocks the behavior of icfs_dialogue based on the ./.fake-icfs_dialogue-response file # fake-icfs_dialogue: script that mocks the behavior of icfs_dialogue based on the ./.fake-icfs_dialogue-response file
ICFS_DIALOGUE_YES=1 ICFS_DIALOGUE_YES=0
ICFS_DIALOGUE_NO=0 ICFS_DIALOGUE_NO=1
ICFS_DIALOGUE_PERM=2 ICFS_DIALOGUE_PERM=2
ICFS_DIALOGUE_TEMP=0
if [[ $1 == "--set-fake-response" ]]; then if [[ $1 == "--set-fake-response" ]]; then
#someone knows we are fake :) #someone knows we are fake :)
@ -28,9 +27,9 @@ else
fi fi
if [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes" ]]; then if [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes" ]]; then
exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_TEMP))" exit "$ICFS_DIALOGUE_YES"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no" ]]; then
exit "$((ICFS_DIALOGUE_NO | ICFS_DIALOGUE_TEMP))" exit "$ICFS_DIALOGUE_NO"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes_perm" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes_perm" ]]; then
exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_PERM))" exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_PERM))"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no_perm" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no_perm" ]]; then