Нужно в цикле while проверять пароль, если подходит спавнить шел в целевой папке
получаю домашнюю папку
получаю приватную папку
получаю файл пароля
читаю ввод пользователя
функция сравнивания паролей:
читаю файл
сравниваю пароли
запускаю шел в приватный папке
структура файлов
shell=/usr/bin/bash
homedir=/home/$user
privdir=$homedir/PRIV_DIR
passwordFile=$privdir/password.dat
краткий набросок:
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <string>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <iostream>
using namespace std;
int main(void){
struct passwd *pw = getpwuid(getuid());
const char *homedir = pw->pw_dir;
//TODO получаем privdir
//TODO получаем passwordFile
while(true){
sleep(10);
string user_pass;
cout << "Введите пароль: ";
getline (cin, user_pass);
if(password_check(passwordFile,user_pass)){
spawnShell(shell,privdir)
return 0;
}
}
return 0;
}