mkdir in C

Conor P. Cahill cpcahil at virtech.uucp
Tue May 29 11:02:51 AEST 1990


In article <009375FC.8A3B0AC0 at rigel.efd.lth.se> e89hse at rigel.efd.lth.se writes:
>
> I'd like to know if there is any way for a C-program to create a directory.
>The mkdir(2) call doesn't exist on the machine I'm using. It is possible to
>create a directory with the mknod(2) call, but then you have to have
>effective-user-id 0 (super user). Of course one could set the substitute user
>flag, but isn't there a more elegant way to do it.

With no mkdir() system call, the best way for a standard user level
program to make a directory is to fork/exec the mkdir program.  Making
your program setuid to root in order to be able to create a directory
can expose you to all kinds of security problems.

BTW - when you ask a question like this it is best to include the 
exact version of the OS that you are using.  Just saying that there is
no mkdir() and that mknod() requires root is not enough because it is 
possible that you are not reading the documentation right, or that your
version of the OS has some special user_can_make_a_dir() system call that
will do the required job, etc.
-- 
Conor P. Cahill            (703)430-9247        Virtual Technologies, Inc.,
uunet!virtech!cpcahil                           46030 Manekin Plaza, Suite 160
                                                Sterling, VA 22170 



More information about the Comp.unix.questions mailing list