* ioperm() and setuid() @ 2003-10-13 0:02 Lejanson C. Go 2003-10-13 13:11 ` Chris Nanakos 2003-10-13 13:42 ` Luciano Miguel Ferreira Rocha 0 siblings, 2 replies; 3+ messages in thread From: Lejanson C. Go @ 2003-10-13 0:02 UTC (permalink / raw) To: linux-c-programming Hello, Does anyone know how to allow non root users in linux to access to i/o ports using ioperm() and setuid(). I tried using the ioperm() function and setuid() but i still get a message of permission access denied. Can anyone help me on this? Lejanson ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ioperm() and setuid() 2003-10-13 0:02 ioperm() and setuid() Lejanson C. Go @ 2003-10-13 13:11 ` Chris Nanakos 2003-10-13 13:42 ` Luciano Miguel Ferreira Rocha 1 sibling, 0 replies; 3+ messages in thread From: Chris Nanakos @ 2003-10-13 13:11 UTC (permalink / raw) To: Lejanson C. Go, linux-c-programming Can you send your source code please???? Best regards, Chris. ----- Original Message ----- From: "Lejanson C. Go" <lejanson@ntsp.nec.co.jp> To: <linux-c-programming@vger.kernel.org> Sent: Monday, October 13, 2003 3:02 AM Subject: ioperm() and setuid() > Hello, > > Does anyone know how to allow non root users in linux to > access to i/o ports using ioperm() and setuid(). > > I tried using the ioperm() function and setuid() but i still > get a message of permission access denied. > > Can anyone help me on this? > > Lejanson > > - > To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ioperm() and setuid() 2003-10-13 0:02 ioperm() and setuid() Lejanson C. Go 2003-10-13 13:11 ` Chris Nanakos @ 2003-10-13 13:42 ` Luciano Miguel Ferreira Rocha 1 sibling, 0 replies; 3+ messages in thread From: Luciano Miguel Ferreira Rocha @ 2003-10-13 13:42 UTC (permalink / raw) To: Lejanson C. Go; +Cc: linux-c-programming On Mon, Oct 13, 2003 at 08:02:25AM +0800, Lejanson C. Go wrote: > Hello, > > Does anyone know how to allow non root users in linux to > access to i/o ports using ioperm() and setuid(). I think you're misunderstanding setuid(). For a program to have I/O access, it needs root permissions. For a normal user to gain those permissions, the executable needs to be owned by root and have the set-user-id bit set. Or you can use the userhelper package to give temporary root permissions to the user for that program. Here's code I use for that purpose (changed a little): int main(int ac, char *av[]) { /* parse and check args */ if (parse(ac, av)) return 1; /* check if enough privileges for io ops */ if (geteuid()) { if (!helped) /* haven't tried consolehelper yet, try it */ use_ch(ac, av); fprintf(stderr, "%s: must run with superuser privileges\n", pname); return 1; } /* get privileges for out|in_p delay */ if (ioperm(0x80, 1, 1)) { err("port 0x80 (pause)"); return 1; } /* get privileges for out|in to lp ports */ if (ioperm(port, IORANGE, 1)) { err2("port %#03x", port); return 1; } ... } /* not running with root privileges, try consolehelper */ void use_ch(int oac, char *oav[]) { extern char **environ; char **nav; if (!(nav = calloc(oac + 2, sizeof(char *)))) { err("new args"); return; } /* copy old args */ memcpy(nav, oav, oac * sizeof(char *)); /* args = args + "-c" */ nav[oac] = "-c"; execve("/usr/bin/consolehelper", nav, environ); err("consolehelper"); } Regards, Luciano Rocha ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-10-13 13:42 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-10-13 0:02 ioperm() and setuid() Lejanson C. Go 2003-10-13 13:11 ` Chris Nanakos 2003-10-13 13:42 ` Luciano Miguel Ferreira Rocha
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).