Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <security/pam_appl.h>
- #include <security/pam_misc.h>
- #include <stdio.h>
- static struct pam_conv login_conv = {
- misc_conv, /* przykładowa funkcja konwersacji z libpam_misc */
- NULL /* ewentualne dane aplikacji (,,domknięcie'') */
- };
- #define MAX_NAME_LEN 32
- #define MAX_CONTENT_LEN 128
- #define PRIVILEGES_TYPES 3
- #define START_OPTIONS_NO 3
- #define MAX_OPTION_LENGTH 128
- char start_options[START_OPTIONS_NO][MAX_OPTION_LENGTH] = {"Pokaż hierarchię drzewa",
- "Dodaj książkę",
- "Dodaj uprawnienia sudo",
- };
- int privileges_needed[START_OPTIONS_NO] = {0,1,2};
- char name[MAX_NAME_LEN + 2], content[MAX_CONTENT_LEN];
- int manager() {
- return 0;
- }
- int sudoer() {
- return 0;
- }
- int handle(unsigned privileges) {
- if (privileges >= PRIVILEGES_TYPES) return -1;
- return 0;
- }
- int add_book() {
- }
- void main () {
- pam_handle_t* pamh = NULL;
- int retval;
- char *username = NULL;
- retval = pam_start("login", username, &login_conv, &pamh);
- if (pamh == NULL || retval != PAM_SUCCESS) {
- fprintf(stderr, "Error when starting: %d\n", retval);
- exit(1);
- }
- retval = pam_authenticate(pamh, 0); /* próba autoryzacji */
- if (retval != PAM_SUCCESS) {
- fprintf(stderr, "Chyba się nie udało!\n");
- exit(2);
- }
- else
- fprintf(stderr, "Świetnie Ci poszło.\n");
- printf("OKEJ ZALOGOWANY TERAZ ROZRÓŻNIAM USERÓW I POZWALAM NA COŚ TAM\n");
- unsigned privileges = 0;
- if (manager()) {
- printf("ZALOGOWANY JAKO MANAGER");
- privileges = 2;
- }
- else if(sudoer()) {
- printf("ZALOGOWANY JAKO PRACOWNIK ZE ZWIĘKSZONYM DOSTĘPEM");
- privileges = 1;
- }
- else {
- printf("ZALOGOWANY JAKO PRACOWNIK ZE ZWYKŁYM DOSTĘPEM");
- privileges = 0;
- }
- while (1) {
- // pętla działania programu
- retval = handle(privileges);
- if (retval != 0) {
- printf("BŁĄD PROGRAMU");
- exit(1);
- }
- }
- pam_end(pamh, PAM_SUCCESS);
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement