Date: Fri, 06 Aug 1999 13:22:40 -0700 From: Jeremy Allison To: bob@hobbes.dtcc.edu Subject: Re: Solaris 7 5/99 and samba-2.0.5a (PR#19508) Message-ID: <37AB4410.A12DCC3E@engr.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit bob@hobbes.dtcc.edu wrote: > > this samba was built on a solaris 2.5 system and was running fine on a > solaris 7 3/99 system. when i installed the solaris 7 5/99 maintenance > update something broke. > > log.smb: > > [1999/08/06 11:04:41, 1] smbd/server.c:main(628) > smbd version 2.0.5a started. > Copyright Andrew Tridgell 1992-1998 > [1999/08/06 11:36:49, 0] locking/shmem_sysv.c:sysv_shm_open(597) > ERROR: root did not create the semaphore > [1999/08/06 11:36:49, 0] locking/locking.c:locking_init(174) > ERROR: Failed to initialise share modes Try this fix (it causes Samba to do a lookup on root and check the correct gid_t rather than just assuming 0). Regards, Jeremy Allison, Samba Team. --- /usr/people/jallison/src/samba-2/samba/source/locking/shmem_sysv.c Wed Jul 14 09:40:38 1999 +++ locking/shmem_sysv.c Thu Jul 29 10:41:15 1999 @@ -528,6 +528,7 @@ /******************************************************************* open the shared memory ******************************************************************/ + struct shmem_ops *sysv_shm_open(int ronly) { BOOL other_processes; @@ -536,6 +537,8 @@ union semun su; int i; pid_t pid; + struct passwd *root_pwd = sys_getpwuid((uid_t)0); + gid_t root_gid = root_pwd ? root_pwd->pw_gid : (gid_t)0; read_only = ronly; @@ -593,7 +596,7 @@ hash_size = sem_ds.sem_nsems-1; if (!read_only) { - if (sem_ds.sem_perm.cuid != 0 || sem_ds.sem_perm.cgid != 0) { + if (sem_ds.sem_perm.cuid != 0 || sem_ds.sem_perm.cgid != root_gid) { DEBUG(0,("ERROR: root did not create the semaphore\n")); return NULL; } @@ -684,7 +687,7 @@ } if (!read_only) { - if (shm_ds.shm_perm.cuid != 0 || shm_ds.shm_perm.cgid != 0) { + if (shm_ds.shm_perm.cuid != 0 || shm_ds.shm_perm.cgid != root_gid) { DEBUG(0,("ERROR: root did not create the shmem\n")); global_unlock(); return NULL; -- -------------------------------------------------------- Buying an operating system without source is like buying a self-assembly Space Shuttle with no instructions. --------------------------------------------------------