Esempio n. 1
0
uint_8 auth_user_permission(char *dir,char *user)
{
	int uid;

	uid=get_uid_by_name(user);
	if (uid==S_NO_USER||uid==S_PASS_ERROR) return 0;
	else return auth_permission(dir,uid);
}
Esempio n. 2
0
int set_uid_by_name(const char* username) 
{
    int uid = get_uid_by_name(username) ;
    if(uid < 0) return -1 ;
    
    return setuid(uid) ;

}
Esempio n. 3
0
File: main.c Progetto: archeart/ftp
int main()
{
	map_init();
	auth_init();

	printf("%d\n",get_uid_by_name("zwz"));
	printf("%d\n",get_uid_by_name("zwzmzd"));
	printf("%d\n",get_uid_by_name("nishi"));

	printf("%d\n",auth_user("zwz","aaa"));
	printf("%d\n",auth_user("iii","aaa"));
	printf("%d\n",auth_user("zwz","mzd"));

	auth_permission("/pro",1);
	auth_permission("/",1);
	auth_permission("/a/a/a/a/a",1);
	printf("%x\n",auth_permission("/pp",1));
	return 0;
}
Esempio n. 4
0
bool dropPrivileges(const char* group_name, const char* user_name)
{
	uid_t uid=get_uid_by_name(user_name);
	gid_t gid=get_gid_by_name(group_name);

	// change them permanently
	if (setregid(gid, gid) == -1)
	{
		writeLog(WARNING, "can't set gid=%d errno=%d", gid, errno);
		return false;
	}
	if (setreuid(uid, uid) == -1)
	{
		writeLog(WARNING, "can't set uid=%d errno=%d", uid, errno);
		return false;
	}

	return true;
}
Esempio n. 5
0
void auth_init()
{
	FILE *fp;
	static char uname[USERNAME_LEN+1];
	static char dir[DIR_LEN+1];
	static char per[DIR_LEN+1];

	printf("*** AUTH SYSTEM INIT START ***\n");
	pthread_mutex_init(&auth_lock,0);

	fp=fopen(passwd_file,"r");
	if (fp==0) printf("passwd NOT EXISTS\n");
	else
	{
		//printf("USER:\n");
		while (!feof(fp))
		{
			MALLOC(struct auth_profile,p);

			fscanf(fp,"%s",uname);
			if (feof(fp)) break;

			fscanf(fp,"%s",p->pass);
			
			p->uid=uid_alloc();

			map_insert(uname,(int)p);
			//printf("%s %s\n",uname,p->pass);
		}

		printf("passwd READ COMPLETE\n");
		fclose(fp);
	}

	fp=fopen(permission_file,"r");
	if (fp==0) printf("permission NOT EXISTS\n");
	else
	{
		while (!feof(fp))
		{
			fscanf(fp,"%s",dir);
			if (feof(fp)) break;
			
			fix_dir(dir);

			while (1)
			{
				int uid;

				fscanf(fp,"%s",uname);
				if (auth_strcmp(uname,"[end]")) break;

				fscanf(fp,"%s",per);
				
				uid=get_uid_by_name(uname);
				if (uid>0)
				{
					uint_8 mask=give_permission_mask(per);

					map_insert(storage(dir,uid),mask);
					//printf("DIR:%s %s %x\n",dir,per,mask);
				}
			}
		}
		printf("permission READ COMPLETE\n");
		fclose(fp);
	}
	printf("*** AUTH SYSTEM INIT COMPLETE ***\n\n");
}
Esempio n. 6
0
int auth_get_uid(char *user)
{
	return get_uid_by_name(user);
}