Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!cs.utexas.edu!uunet!virtech!cpcahil From: cpcahil@virtech.UUCP (Conor P. Cahill) Newsgroups: comp.unix.wizards Subject: Re: How does 'mv' rename directories? Message-ID: <1171@virtech.UUCP> Date: 16 Sep 89 16:13:32 GMT References: <544@isi.UUCP> <4158@buengc.BU.EDU> <1160@virtech.UUCP> <4195@buengc.BU.EDU> Organization: Virtual Technologies Inc Lines: 49 In article <4195@buengc.BU.EDU>, bph@buengc.BU.EDU (Blair P. Houghton) writes: > In article <1160@virtech.UUCP> cpcahil@virtech.UUCP (Conor P. Cahill) writes: > >In article <4158@buengc.BU.EDU>, bph@buengc.BU.EDU (Blair P. Houghton) writes: [ much deleted junk... ] > > You only want mv(1) to be able to seteuid(2) to you, so you can move > your own files. If mv(1) was setuid-root, you could move files all > over the place, without a care. Hence, mv(1) is most definitely > not setuid-root. mv doesn't need to seteuid() since it is not a setuid program. The reason for the discussion about setuid was due to the fact that the original poster wanted to know how a directory could be moved. For BSD, this is simple because the rename(2) syscall allows this, but for SYSV, there is no rename syscall and the old link/unlink pair won't work for directories unless the effective user is root. The solution under sysV is to have a second program mv_dir (in /usr/lib) that is setuid root and is called by mv whenever a directory is to be moved. However the mv_dir program will only allow mv's within the same direcory. > I've been told that mv(1) may call mv_dir(?) (which doesn't exist > on this machine... Encore's Umax is a vanilla BSD...) which is > setuid-root (it is claimed). If this is how it's done, then the > reason for the setuid-root could be to allow the moving of a > directory across partition boundaries when the directory may > contain files with an owner different from the directory-owner. Nope. See above. > Linking to a file is a thing done on the directory containing that > file, and so requires only the permission of the directory. Copying It requires search permission to the source file directory and write permission to the target file direcory. > the file, however, requires permission to read from that file. > > But, basically, there's no need to become uid 0 when you're just moving > files around in a partition. The discussion was not about moving files, it was about moving directories and on a SYSV system you need to be euid root to accomplish it. -- +-----------------------------------------------------------------------+ | Conor P. Cahill uunet!virtech!cpcahil 703-430-9247 ! | Virtual Technologies Inc., P. O. Box 876, Sterling, VA 22170 | +-----------------------------------------------------------------------+