mirror of
https://github.com/samba-team/samba.git
synced 2025-03-09 08:58:35 +03:00
- changed smb_getpwnam() to use winbind style usernames
- finished ntdom -> winbind rename in head
This commit is contained in:
parent
bfa14cff8c
commit
ada483cb56
@ -290,7 +290,7 @@ char *get_user_home_dir(char *user);
|
||||
BOOL map_username(char *user);
|
||||
struct passwd *Get_Pwnam(char *user,BOOL allow_change);
|
||||
BOOL user_in_list(char *user,char *list);
|
||||
struct passwd *smb_getpwnam(char *user, char *domain, BOOL allow_change);
|
||||
struct passwd *smb_getpwnam(char *user, BOOL allow_change);
|
||||
int smb_initgroups(char *user, char *domain, gid_t group);
|
||||
|
||||
/*The following definitions come from lib/util.c */
|
||||
|
@ -429,19 +429,18 @@ static struct passwd * uname_string_combinations(char *s,struct passwd * (*fn)(c
|
||||
these wrappers allow appliance mode to work. In appliance mode the username
|
||||
takes the form DOMAIN/user
|
||||
****************************************************************************/
|
||||
struct passwd *smb_getpwnam(char *user, char *domain, BOOL allow_change)
|
||||
struct passwd *smb_getpwnam(char *user, BOOL allow_change)
|
||||
{
|
||||
struct passwd *pw;
|
||||
fstring userdom;
|
||||
char *p;
|
||||
|
||||
pw = Get_Pwnam(user, allow_change);
|
||||
if (pw || !domain || !*domain) return pw;
|
||||
if (pw) return pw;
|
||||
|
||||
slprintf(userdom, sizeof(userdom), "%s/%s", domain, user);
|
||||
p = strchr(user,'/');
|
||||
if (p) return Get_Pwnam(p+1, allow_change);
|
||||
|
||||
DEBUG(4,("smb_getpwnam trying userdom %s\n", userdom));
|
||||
|
||||
return Get_Pwnam(userdom, allow_change);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int smb_initgroups(char *user, char *domain, gid_t group)
|
||||
|
@ -323,7 +323,7 @@ static int fill_grent(struct group *result,
|
||||
/* Rewind "file pointer" to start of ntdom password database */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_setpwent(void)
|
||||
_nss_winbind_setpwent(void)
|
||||
{
|
||||
return generic_request(WINBINDD_SETPWENT, NULL, NULL);
|
||||
}
|
||||
@ -331,7 +331,7 @@ _nss_ntdom_setpwent(void)
|
||||
/* Close ntdom password database "file pointer" */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_endpwent(void)
|
||||
_nss_winbind_endpwent(void)
|
||||
{
|
||||
return generic_request(WINBINDD_ENDPWENT, NULL, NULL);
|
||||
}
|
||||
@ -339,7 +339,7 @@ _nss_ntdom_endpwent(void)
|
||||
/* Fetch the next password entry from ntdom password database */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getpwent_r(struct passwd *result, char *buffer,
|
||||
_nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
enum nss_status ret;
|
||||
@ -354,7 +354,7 @@ _nss_ntdom_getpwent_r(struct passwd *result, char *buffer,
|
||||
/* Return passwd struct from uid */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
|
||||
_nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
enum nss_status ret;
|
||||
@ -372,7 +372,7 @@ _nss_ntdom_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
|
||||
/* Return passwd struct from username */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getpwnam_r(const char *name, struct passwd *result, char *buffer,
|
||||
_nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
enum nss_status ret;
|
||||
@ -395,7 +395,7 @@ _nss_ntdom_getpwnam_r(const char *name, struct passwd *result, char *buffer,
|
||||
/* Rewind "file pointer" to start of ntdom group database */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_setgrent(void)
|
||||
_nss_winbind_setgrent(void)
|
||||
{
|
||||
return generic_request(WINBINDD_SETGRENT, NULL, NULL);
|
||||
}
|
||||
@ -403,7 +403,7 @@ _nss_ntdom_setgrent(void)
|
||||
/* Close "file pointer" for ntdom group database */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_endgrent(void)
|
||||
_nss_winbind_endgrent(void)
|
||||
{
|
||||
return generic_request(WINBINDD_ENDGRENT, NULL, NULL);
|
||||
}
|
||||
@ -413,7 +413,7 @@ _nss_ntdom_endgrent(void)
|
||||
/* Get next entry from ntdom group database */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getgrent_r(struct group *result,
|
||||
_nss_winbind_getgrent_r(struct group *result,
|
||||
char *buffer, size_t buflen, int *errnop)
|
||||
{
|
||||
enum nss_status ret;
|
||||
@ -428,7 +428,7 @@ _nss_ntdom_getgrent_r(struct group *result,
|
||||
/* Return group struct from group name */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getgrnam_r(const char *name,
|
||||
_nss_winbind_getgrnam_r(const char *name,
|
||||
struct group *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
@ -448,7 +448,7 @@ _nss_ntdom_getgrnam_r(const char *name,
|
||||
/* Return group struct from gid */
|
||||
|
||||
enum nss_status
|
||||
_nss_ntdom_getgrgid_r(gid_t gid,
|
||||
_nss_winbind_getgrgid_r(gid_t gid,
|
||||
struct group *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
|
@ -493,7 +493,7 @@ BOOL pass_check_smb(char *user, char *domain,
|
||||
}
|
||||
else
|
||||
{
|
||||
pass = smb_getpwnam(user,domain,True);
|
||||
pass = smb_getpwnam(user,True);
|
||||
}
|
||||
|
||||
if (pass == NULL)
|
||||
|
@ -572,7 +572,7 @@ static BOOL check_server_security(char *orig_user, char *domain, char *unix_user
|
||||
* level security as we never know if it was a failure
|
||||
* due to a bad password, or the user really doesn't exist.
|
||||
*/
|
||||
if(lp_adduser_script() && !smb_getpwnam(unix_user,domain, True)) {
|
||||
if(lp_adduser_script() && !smb_getpwnam(unix_user,True)) {
|
||||
smb_create_user(unix_user);
|
||||
}
|
||||
}
|
||||
@ -608,7 +608,7 @@ static BOOL check_domain_security(char *orig_user, char *domain, char *unix_user
|
||||
* If the admin wants us to try and create a UNIX
|
||||
* user on the fly, do so.
|
||||
*/
|
||||
if(user_exists && lp_adduser_script() && !smb_getpwnam(unix_user,domain,True)) {
|
||||
if(user_exists && lp_adduser_script() && !smb_getpwnam(unix_user,True)) {
|
||||
smb_create_user(unix_user);
|
||||
}
|
||||
} else {
|
||||
@ -618,7 +618,7 @@ static BOOL check_domain_security(char *orig_user, char *domain, char *unix_user
|
||||
* wants us to try and delete that UNIX user on the fly,
|
||||
* do so.
|
||||
*/
|
||||
if(!user_exists && lp_deluser_script() && smb_getpwnam(unix_user,domain,True)) {
|
||||
if(!user_exists && lp_deluser_script() && smb_getpwnam(unix_user,True)) {
|
||||
smb_delete_user(unix_user);
|
||||
}
|
||||
}
|
||||
@ -853,6 +853,17 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
|
||||
|
||||
pstrcpy( orig_user, user);
|
||||
|
||||
/* if the username exists as a domain/username pair on the unix system then use
|
||||
that */
|
||||
if (!Get_Pwnam(user, False)) {
|
||||
pstring user2;
|
||||
slprintf(user2,sizeof(user2),"%s/%s", domain, user);
|
||||
if (Get_Pwnam(user2, True)) {
|
||||
DEBUG(3,("Using unix username %s\n", user2));
|
||||
pstrcpy(user, user2);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Pass the user through the NT -> unix user mapping
|
||||
* function.
|
||||
@ -863,7 +874,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
|
||||
/*
|
||||
* Do any UNIX username case mangling.
|
||||
*/
|
||||
smb_getpwnam(user, domain, True);
|
||||
smb_getpwnam(user, True);
|
||||
|
||||
add_session_user(user);
|
||||
|
||||
@ -920,7 +931,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
|
||||
|
||||
if (lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_USER)
|
||||
{
|
||||
if (smb_getpwnam(user,domain,True))
|
||||
if (smb_getpwnam(user,True))
|
||||
{
|
||||
DEBUG(1,("Rejecting user '%s': bad password\n", user));
|
||||
return bad_password_error(inbuf,outbuf);
|
||||
@ -933,14 +944,14 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
|
||||
*/
|
||||
}
|
||||
|
||||
if (*smb_apasswd || !smb_getpwnam(user,domain,True))
|
||||
if (*smb_apasswd || !smb_getpwnam(user,True))
|
||||
pstrcpy(user,lp_guestaccount(-1));
|
||||
DEBUG(3,("Registered username %s for guest access\n",user));
|
||||
guest = True;
|
||||
}
|
||||
}
|
||||
|
||||
if (!smb_getpwnam(user,domain,True)) {
|
||||
if (!smb_getpwnam(user,True)) {
|
||||
DEBUG(3,("No such user %s [%s] - using guest account\n",user, domain));
|
||||
pstrcpy(user,lp_guestaccount(-1));
|
||||
guest = True;
|
||||
@ -975,7 +986,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
|
||||
user we should become.
|
||||
*/
|
||||
{
|
||||
const struct passwd *pw = smb_getpwnam(user,domain,False);
|
||||
const struct passwd *pw = smb_getpwnam(user,False);
|
||||
if (!pw) {
|
||||
DEBUG(1,("Username %s is invalid on this system\n",user));
|
||||
return bad_password_error(inbuf,outbuf);
|
||||
|
@ -295,7 +295,7 @@ connection_struct *make_connection(char *service,char *user,char *password, int
|
||||
}
|
||||
|
||||
/* find out some info about the user */
|
||||
pass = smb_getpwnam(user,validated_domain(vuid),True);
|
||||
pass = smb_getpwnam(user,True);
|
||||
|
||||
if (pass == NULL) {
|
||||
DEBUG(0,( "Couldn't find account %s\n",user));
|
||||
|
Loading…
x
Reference in New Issue
Block a user