Laboureau pierre wrote:
>
> Salut,
>
> Dans le cadre, de l'acces au port parallele sous Linux, je desire
> utiliser la fonction ioperm() or :
>
> En utilisant ioperm() en tant qu'utilisateur, le shell renvoie le message
> d'erreur suivant : ioperm:op�ration non permise.
> En tant que root, la communication avec le port fonctionne.
> J'ai donne les droits aux fichiers /dev/lp* et aux fichiers /dev/par* : �a ne
> change rien.
> En utilisant alors setuid(0) (<unistd.h>) : pas + de r�sultats.
>
> Comment utiliser ioperm() en ayant les droits utilisateur ?
Bon je connais pas pr�cisement la commande ioperm mais avec un coup de
man tu vois :
DESCRIPTION
Ioperm positionne les bits de permission d'acc�s du processus
aux ports commen�ant � l'adresse from �tales sur
num octets � la valeur turn_on. L'utilisation de ioperm
n�cessite les privil�ges de Super-User.
C'est clair. Sous UNIX les utilisateurs NE PEUVENT PAS toucher au
p�riph�riques directement.
Ton programme qui contient cette commande doit �tre lanc� en tant que
root.
L'utilisation de setuid() ne permet pas a un processus de gagner des
privileges bien sur car cela permettrait � n'importe quel utilisateur
capable de compiler du C de faire un truc du genre :
void main (void)
{
setuid(0);
execl("/usr/bin/bash","");
}
Si vraiment ton programme est "s�r" (gare au controle de validit� des
param�tres pouvant g�n�rer des erreurs) tu peux faire comme ceci :
change l'UID et le GID de ton executable a root
et tu fais un chmod u+s
Ainsi lorsque un user lancera l'executable, celui s'executera en tant
que root.
Si t es pas root et que tu peux pas faire ca, c est que tu t es lance
dans un truc irrealisable :)
--
----------------------------------------------------------
Frederic PLE
email: [EMAIL PROTECTED] Yahoo! Messenger: gvfred
----------------------------------------------------------
Make money to surf :
https://www.alladvantage.com/home.asp?refid=IIU-338
http://www.mediabarre.com/cgi-bin/mba.cgi?004761