bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EmptyDir and remote repository permissions problem


From: krz
Subject: EmptyDir and remote repository permissions problem
Date: 10 Apr 2001 04:07:08 -0000

>Submitter-Id:   net
>Originator:     Keith Zaback
>Organization:  net
>Confidential:  no
>Synopsis:      Receive "Cannot create_adm_p" and "Permission denied" error 
>when using remote repository        
>Severity:      serious
>Priority:      low
>Category:      cvs
>Class:         sw-bug
>Release:       cvs-1.11
>Environment:
        
System: Linux kanuka.confusatron.org 2.2.13 #4 SMP Thu Oct 28 14:52:58 CDT 1999 
i586 unknown
Architecture: i586

>Description:
        Here is my repository setup
        $ ls -l /home
        drwxrwxr-x   5 root     root         4096 Apr  4 17:04 cvs/
        $ ls -l /home/cvs
        drwxrwxr-x   2 root     root         4096 Apr  9 20:45 CVSROOT/
        drwxr-xr-x   2 krz      krz          4096 Apr  9 20:02 project1/
        drwxr-xr-x   6 krz      krz          4096 Apr  9 22:30 project2/

        I (user krz) own the project1 and project2 directories, but root
        owns /home/cvs.  Everything works great, except remote repostiory
        commands.  When using a remote repository, the "cvs server" process
        creates a /tmp/cvs-serv{pid} directory, then starts populating that
        directory with the CVS admin directory ("CVS") and other
        sub-directories of the project.  Then in "server.c" line 417, it
        looks for a file "/tmp/cvs-serv{pid}/{subdirectory}/CVS/Repository"
        and if that is not a file, it tries to create
        "/home/CVS/CVSROOT/EmptyDir" which my user (krz) does not have
        permission to create.  Therefore, nothing works :)
        
>How-To-Repeat:
        The description contains the information needed to test/repeat this.

>Fix:
        I could work around this problem by giving my user (krz) permissions
        to create directories inside of /home/cvs/CVSROOT.  Instead, I made
        a small patch to have it create the EmpryDir at:
        "/tmp/cvs-serv{pid}/{subdirectory}/CVS/EmptyDir" which seems to work
        for me.

--- server.c    Fri Jul 28 15:18:40 2000
+++ server.c.new        Mon Apr  9 23:04:24 2001
@@ -420,8 +420,8 @@
               differently.  */
 
            char *empty;
-           empty = malloc (strlen (CVSroot_directory)
-                           + sizeof (CVSROOTADM)
+           empty = malloc (strlen (dir_where_cvsadm_lives)
+                           + sizeof (CVSADM)
                            + sizeof (CVSNULLREPOS)
                            + 10);
            if (! empty)
@@ -431,8 +431,8 @@
            }
 
            /* Create the directory name. */
-           (void) sprintf (empty, "%s/%s/%s", CVSroot_directory,
-                           CVSROOTADM, CVSNULLREPOS);
+           (void) sprintf (empty, "%s/%s/%s", dir_where_cvsadm_lives,
+                           CVSADM, CVSNULLREPOS);
 
            /* Create the directory if it doesn't exist. */
            if (! isfile (empty))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]