Hello !
Depuis le 2.6.8, il faut avoir cap_sys_rawio pour envoyer des commandes raw scsi ( ce qui est logique somme tout ). Mais comme pas mal d'application user-space s'ammusent à balancer des commandes raw scsi à tout va, ce nouveau kernel fou un peux la zone. 
Heureusement, certaines peuvent êtres setuid-root et patché afin de droper tous les droits sauf cap_sys_rawio (et ce, dès les premières lignes de main(), donc pas de trou de sécu ) , malheureusement d'autres ne peuvent pas être setuid root ( toutes les applis utilisant les lib kde, ou gtk ).
Etant donné que cap_setpcap est automatiquement dropée par init et ne peux pas être changée ( sauf par un thread du kernel, mais bon ... ), et que linux ne supporte pas les capability sur le système de fichier ( donc les hineritables sont totalement innutiles ), *comment* lancer un programme avec uniquement cap_sys_rawio sans qu'il soit suid-root ( je veux bien le patcher et/ou le lancer par un wrapper )
Mes seulent tentatives se sont soldée par un processus qui a cap_sys_rawio comme hineritable, mais qui n'as rien dans effective ou allowed ....
Forum Linux.général Capability
30
août
2004
# En C :
Posté par CoinKoin . Évalué à 3.
#include <sys/capability.h> #include <stdio.h> #include <errno.h> #define NOM_PROGRAMME "mon_programme" int main(int argc, char** argv){ if(geteuid()!=0) {fprintf(stderr,"Ce programme doit être setuid root!"); return 1;} cap_set_proc(cap_sys_rawio);/* Abandon de toutes les autres capacités */ seteuid(getuid());/* Abandon des droits root. */ execvp(MON_PROGRAMME,argv); perror("échec de l'execvp()."); return 1; } /*Attention quand même, cela change le nom d'appel du processus en question. En général, ce n'est pas gênant, mais il y a des exceptions (comme gcc ou gzip). Mais c'est assez facile à résoudre, si besoin est. -- CoinKoin. P.S. : je ne l'ai pas testé, ni même compilé. Mais je pense qu'il marche. */[^] # Re: En C :
Posté par couriousous . Évalué à 2.
Non, désolé, mais ca ne marchera pas.
car si l'application que tu lance n'est pas setuid root, toutes les capability seront remise à 0 ( sauf les héritables).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.