From 2b74b9f9a3164cdf407c5977a1c2700a537e46cf Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Mon, 31 Dec 2018 00:10:27 +0100 Subject: [PATCH] working on permissions --- build/modules/configRead.o | Bin 37672 -> 37776 bytes build/modules/fileManagement.o | Bin 33960 -> 35016 bytes build/modules/ftpCommandElaborate.o | Bin 72112 -> 74232 bytes build/modules/ftpData.o | Bin 45752 -> 45752 bytes build/modules/ftpServer.o | Bin 57808 -> 59176 bytes build/uFTP | Bin 213280 -> 213744 bytes ftpCommandElaborate.c | 105 ++++++++++++++++++++-------- ftpServer.c | 27 ++++++- library/auth.c | 20 +++++- library/configRead.c | 16 ++++- library/fileManagement.c | 47 ++++++++++++- library/fileManagement.h | 12 +++- 12 files changed, 190 insertions(+), 37 deletions(-) diff --git a/build/modules/configRead.o b/build/modules/configRead.o index 7190a6f42704d97890d74f55479cbd3dc9a692e4..742e093d3ad158fb7ebcedb0174b2314bbcce862 100644 GIT binary patch delta 457 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 delta 11760 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 delta 13329 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 OXVH1nb|xvrD3h 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 delta 72449 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[socketId].login.ownerShip.uid = ((usersParameters_DataType *) data->ftpParameters.usersVector.Data[searchUserNameIndex])->ownerShip.uid; data->clients[socketId].login.userLoggedIn = 1; + + printf("\ndata->clients[socketId].login.ownerShip.ownerShipSet = %d", data->clients[socketId].login.ownerShip.ownerShipSet); + printf("\ndata->clients[socketId].login.ownerShip.gid = %d", data->clients[socketId].login.ownerShip.gid); + printf("\ndata->clients[socketId].login.ownerShip.uid = %d", data->clients[socketId].login.ownerShip.uid); + returnCode = socketPrintf(data, socketId, "s", "230 Login Ok.\r\n"); if (returnCode <= 0) return FTP_COMMAND_PROCESSED_WRITE_ERROR; @@ -281,9 +288,11 @@ int parseCommandAuth(ftpDataType * data, int socketId) int parseCommandPwd(ftpDataType * data, int socketId) { + printf("\n pwd is %s", data->clients[socketId].login.ftpPath.text); int returnCode; returnCode = socketPrintf(data, socketId, "sss", "257 \"", data->clients[socketId].login.ftpPath.text ,"\" is your current location\r\n"); + if (returnCode <= 0) return FTP_COMMAND_PROCESSED_WRITE_ERROR; @@ -697,7 +706,7 @@ int parseCommandStor(ftpDataType * data, int socketId) char *theNameToStor; theNameToStor = getFtpCommandArg("STOR", data->clients[socketId].theCommandReceived, 0); cleanDynamicStringDataType(&data->clients[socketId].fileToStor, 0, &data->clients[socketId].memoryTable); - + if (strlen(theNameToStor) > 0) { isSafePath = getSafePath(&data->clients[socketId].fileToStor, theNameToStor, &data->clients[socketId].login, &data->clients[socketId].memoryTable); @@ -741,7 +750,7 @@ int parseCommandCwd(ftpDataType * data, int socketId) if (isSafePath == 1) { - //printf("\n The Path requested for CWD IS:%s", theSafePath.text); + printf("\n The Path requested for CWD IS:%s", theSafePath.text); setDynamicStringDataType(&absolutePathPrevious, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen, &data->clients[socketId].memoryTable); setDynamicStringDataType(&ftpPathPrevious, data->clients[socketId].login.ftpPath.text, data->clients[socketId].login.ftpPath.textLen, &data->clients[socketId].memoryTable); @@ -779,15 +788,26 @@ int parseCommandCwd(ftpDataType * data, int socketId) } } - if (FILE_IsDirectory(data->clients[socketId].login.absolutePath.text) == 1) + printf("\nCheck the directory: %s", data->clients[socketId].login.absolutePath.text); + + if (FILE_IsDirectory(data->clients[socketId].login.absolutePath.text) == 1 ) { - returnCode = socketPrintf(data, socketId, "sss", "250 OK. Current directory is ", data->clients[socketId].login.ftpPath.text, "\r\n"); + if((checkUserFilePermissions(data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_R ) == FILE_PERMISSION_R) + { + returnCode = socketPrintf(data, socketId, "sss", "250 OK. Current directory is ", data->clients[socketId].login.ftpPath.text, "\r\n"); + } + else + { + returnCode = socketPrintf(data, socketId, "sss", "530 Can't change directory to ", data->clients[socketId].login.absolutePath.text, ": no permissions\r\n"); + setDynamicStringDataType(&data->clients[socketId].login.absolutePath, absolutePathPrevious.text, absolutePathPrevious.textLen, &data->clients[socketId].memoryTable); + setDynamicStringDataType(&data->clients[socketId].login.ftpPath, ftpPathPrevious.text, ftpPathPrevious.textLen, &data->clients[socketId].memoryTable); + } } else { + returnCode = socketPrintf(data, socketId, "sss", "530 Can't change directory to ", data->clients[socketId].login.absolutePath.text, ": No such file or directory\r\n"); setDynamicStringDataType(&data->clients[socketId].login.absolutePath, absolutePathPrevious.text, absolutePathPrevious.textLen, &data->clients[socketId].memoryTable); setDynamicStringDataType(&data->clients[socketId].login.ftpPath, ftpPathPrevious.text, ftpPathPrevious.textLen, &data->clients[socketId].memoryTable); - returnCode = socketPrintf(data, socketId, "sss", "530 Can't change directory to ", data->clients[socketId].login.absolutePath.text, ": No such file or directory\r\n"); } cleanDynamicStringDataType(&absolutePathPrevious, 0, &data->clients[socketId].memoryTable); @@ -941,21 +961,35 @@ int parseCommandDele(ftpDataType * data, int socketId) //printf("\nThe file to delete is: %s", deleFileName.text); if (FILE_IsFile(deleFileName.text) == 1) { - returnStatus = remove(deleFileName.text); - - if (returnStatus == -1) - { - returnCode = socketPrintf(data, socketId, "sss", "550 Could not delete the file: ", theFileToDelete, " some errors occurred\r\n"); - } - else - { - returnCode = socketPrintf(data, socketId, "sss", "250 Deleted ", theFileToDelete, "\r\n"); - } - functionReturnCode = FTP_COMMAND_PROCESSED; + if ((checkUserFilePermissions(deleFileName.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_W) == FILE_PERMISSION_W) + { + returnStatus = remove(deleFileName.text); - if (returnCode <= 0) - functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + if (returnStatus == -1) + { + returnCode = socketPrintf(data, socketId, "sss", "550 Could not delete the file: ", theFileToDelete, " some errors occurred\r\n"); + } + else + { + returnCode = socketPrintf(data, socketId, "sss", "250 Deleted ", theFileToDelete, "\r\n"); + } + + functionReturnCode = FTP_COMMAND_PROCESSED; + + if (returnCode <= 0) + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + + } + else + { + returnCode = socketPrintf(data, socketId, "sss", "550 Could not delete the file: ", theFileToDelete, " no permissions\r\n"); + + functionReturnCode = FTP_COMMAND_PROCESSED; + + if (returnCode <= 0) + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + } } else { @@ -1028,21 +1062,32 @@ int parseCommandRmd(ftpDataType * data, int socketId) { if (FILE_IsDirectory(rmdFileName.text) == 1) { - returnStatus = rmdir(rmdFileName.text); + if ((checkUserFilePermissions(rmdFileName.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_W) == FILE_PERMISSION_W) + { + returnStatus = rmdir(rmdFileName.text); - if (returnStatus == -1) - { - returnCode = socketPrintf(data, socketId, "s", "550 Could not remove the directory, some errors occurred.\r\n"); - } - else - { - returnCode = socketPrintf(data, socketId, "s", "250 The directory was successfully removed\r\n"); - } + if (returnStatus == -1) + { + returnCode = socketPrintf(data, socketId, "s", "550 Could not remove the directory, some errors occurred.\r\n"); + } + else + { + returnCode = socketPrintf(data, socketId, "s", "250 The directory was successfully removed\r\n"); + } - functionReturnCode = FTP_COMMAND_PROCESSED; + functionReturnCode = FTP_COMMAND_PROCESSED; - if (returnCode <= 0) - functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + if (returnCode <= 0) + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + } + else + { + returnCode = socketPrintf(data, socketId, "s", "550 Could not delete the directory: No permissions\r\n"); + functionReturnCode = FTP_COMMAND_PROCESSED; + + if (returnCode <= 0) + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + } } else { diff --git a/ftpServer.c b/ftpServer.c index 0ccc732..c6d9d38 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -379,6 +379,19 @@ void *connectionWorkerHandle(void * socketId) else if (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "NLST", strlen("NLST")) == 1) theCommandType = COMMAND_TYPE_NLST; + + if ((checkUserFilePermissions(ftpData.clients[theSocketId].listPath.text, ftpData.clients[theSocketId].login.ownerShip.uid, ftpData.clients[theSocketId].login.ownerShip.gid) & FILE_PERMISSION_R) != FILE_PERMISSION_R) + { + returnCode = socketPrintf(&ftpData, theSocketId, "s", "550 No permissions\r\n"); + if (returnCode <= 0) + { + ftpData.clients[theSocketId].closeTheClient = 1; + printf("\n Closing the client 8"); + pthread_exit(NULL); + } + break; + } + returnCode = socketPrintf(&ftpData, theSocketId, "s", "150 Accepted data connection\r\n"); if (returnCode <= 0) { @@ -418,6 +431,18 @@ void *connectionWorkerHandle(void * socketId) pthread_exit(NULL); } + if ((checkUserFilePermissions(ftpData.clients[theSocketId].fileToRetr.text, ftpData.clients[theSocketId].login.ownerShip.uid, ftpData.clients[theSocketId].login.ownerShip.gid) & FILE_PERMISSION_R) != FILE_PERMISSION_R) + { + writeReturn = socketPrintf(&ftpData, theSocketId, "s", "550 no reading permission on the file\r\n"); + if (writeReturn <= 0) + { + ftpData.clients[theSocketId].closeTheClient = 1; + printf("\n Closing the client 12"); + pthread_exit(NULL); + } + + break; + } writenSize = writeRetrFile(&ftpData, theSocketId, ftpData.clients[theSocketId].workerData.retrRestartAtByte, ftpData.clients[theSocketId].workerData.theStorFile); ftpData.clients[theSocketId].workerData.retrRestartAtByte = 0; @@ -683,7 +708,7 @@ static int processCommand(int processingElement) { int toReturn = 0; //printTimeStamp(); - //printf ("Command received from (%d): %s", processingElement, ftpData.clients[processingElement].theCommandReceived); + printf ("\nCommand received from (%d): %s", processingElement, ftpData.clients[processingElement].theCommandReceived); cleanDynamicStringDataType(&ftpData.clients[processingElement].ftpCommand.commandArgs, 0, &ftpData.clients[processingElement].memoryTable); cleanDynamicStringDataType(&ftpData.clients[processingElement].ftpCommand.commandOps, 0, &ftpData.clients[processingElement].memoryTable); diff --git a/library/auth.c b/library/auth.c index 0973187..8bfb661 100644 --- a/library/auth.c +++ b/library/auth.c @@ -78,14 +78,28 @@ void loginCheck(char *name, char *password, loginDataType *login, DYNMEM_MemoryT if (pass == NULL) { - cleanLoginData(login, 0, &*memoryTable); + login->userLoggedIn = 0; + return; } else { //printf("Authenticate with %s - %s through system\n", login, password); setDynamicStringDataType(&login->name, name, strlen(name), &*memoryTable); - setDynamicStringDataType(&login->homePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); + //setDynamicStringDataType(&login->homePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); + setDynamicStringDataType(&login->homePath, "/", 1, &*memoryTable); setDynamicStringDataType(&login->absolutePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); + + /* + if (login->homePath.text[login->homePath.textLen-1] != '/') + { + appendToDynamicStringDataType(&login->homePath, "/", 1, &*memoryTable); + } + + if (login->absolutePath.text[login->absolutePath.textLen-1] != '/') + { + appendToDynamicStringDataType(&login->absolutePath, "/", 1, &*memoryTable); + }*/ + setDynamicStringDataType(&login->ftpPath, "/", strlen("/"), &*memoryTable); login->ownerShip.uid = pass->pw_gid; @@ -98,6 +112,8 @@ void loginCheck(char *name, char *password, loginDataType *login, DYNMEM_MemoryT printf("\nDir: %s", pass->pw_dir); printf("\nGid: %d", pass->pw_gid); printf("\nUid: %d", pass->pw_uid); + printf("\nlogin->homePath.text: %s", login->homePath.text); + printf("\nlogin->absolutePath.text: %s", login->absolutePath.text); } } else diff --git a/library/configRead.c b/library/configRead.c index bd47d6b..7f8a62f 100644 --- a/library/configRead.c +++ b/library/configRead.c @@ -603,11 +603,25 @@ static int parseConfigurationFile(ftpParameters_DataType *ftpParameters, DYNV_Ve userData.ownerShip.gid = FILE_getGID(userData.ownerShip.groupOwnerString); userData.ownerShip.uid = FILE_getUID(userData.ownerShip.userOwnerString); - userData.ownerShip.ownerShipSet = 1; + + + if (userData.ownerShip.gid != -1 && + userData.ownerShip.uid != -1) + { + userData.ownerShip.ownerShipSet = 1; + } + else + { + userData.ownerShip.gid = 0; + userData.ownerShip.uid = 0; + userData.ownerShip.ownerShipSet = 0; + } } else { userData.ownerShip.ownerShipSet = 0; + userData.ownerShip.gid = 0; + userData.ownerShip.uid = 0; userData.ownerShip.groupOwnerString = NULL; userData.ownerShip.userOwnerString = NULL; } diff --git a/library/fileManagement.c b/library/fileManagement.c index 47fda72..0754b67 100644 --- a/library/fileManagement.c +++ b/library/fileManagement.c @@ -546,7 +546,7 @@ char * FILE_GetListPermissionsString(char *file, DYNMEM_MemoryTable_DataType ** modeval[8] = (perm & S_IWOTH) ? 'w' : '-'; modeval[9] = (perm & S_IXOTH) ? 'x' : '-'; modeval[10] = '\0'; - + if(lstat(file, &stl) == 0) { if (S_ISLNK(stl.st_mode)) @@ -561,6 +561,51 @@ char * FILE_GetListPermissionsString(char *file, DYNMEM_MemoryTable_DataType ** return modeval; } + +int checkUserFilePermissions(char *fileName, int uid, int gid) +{ + + if (uid == 0 || gid == 0) + { + return FILE_PERMISSION_RW; + } + + static int init = 0; + if (init == 0) + { + + } + + init = 1; + + int filePermissions = FILE_PERMISSION_NO_RW; + int returnCode = 0; + char *toReturn; + struct stat info; + + if ((returnCode = stat(fileName, &info)) == -1) + { + return -1; + } + + if (info.st_uid == uid || + info.st_gid == gid) + { + filePermissions = FILE_PERMISSION_RW; + } + else + { + mode_t perm = info.st_mode; + if ((perm & S_IROTH)) + filePermissions |= FILE_PERMISSION_R; + + if ((perm & S_IWOTH)) + filePermissions |= FILE_PERMISSION_W; + } + + return filePermissions; +} + char * FILE_GetOwner(char *fileName, DYNMEM_MemoryTable_DataType **memoryTable) { int returnCode = 0; diff --git a/library/fileManagement.h b/library/fileManagement.h index b0cd101..f332b1b 100644 --- a/library/fileManagement.h +++ b/library/fileManagement.h @@ -32,10 +32,17 @@ #define FILE_MAX_LINE_LENGHT 512 #define FILE_MAX_PAR_VAR_SIZE 256 + + #define FILE_PERMISSION_NO_RW 0 + #define FILE_PERMISSION_R 1 + #define FILE_PERMISSION_W 2 + #define FILE_PERMISSION_RW 3 + + typedef struct FILE_StringParameterDataStruct { - char Name[FILE_MAX_PAR_VAR_SIZE]; - char Value[FILE_MAX_PAR_VAR_SIZE]; + char Name[FILE_MAX_PAR_VAR_SIZE]; + char Value[FILE_MAX_PAR_VAR_SIZE]; } FILE_StringParameter_DataType; @@ -73,5 +80,6 @@ gid_t FILE_getGID(const char *group_name); void FILE_checkAllOpenedFD(void); int fd_is_valid(int fd); + int checkUserFilePermissions(char *fileName, int uid, int gid); #define GEN_FILE_MANAGEMENT_TYPES #endif