J'essaie de travailler avec des groupes de contrôle sur deux systèmes d'exploitation différents (Ubuntu et CentOS). Il y a peu de préoccupations que je voudrais poser.
J'essaie de créer un groupe de contrôle à l'aide de la cgcreate
commande, et il semble qu'il nécessite un accès root sur la machine. Tous les exemples que j'ai vus jusqu'à présent ne disent rien sur la nécessité d'être l'utilisateur root pour créer ou modifier des groupes de contrôle.
Est-il vraiment nécessaire d'être root? L'objectif final est d'écrire une application C ++ qui crée et gère des groupes de contrôle pour contrôler les ressources à l'aide de l'API libcgroup. Mais l'application C ++ ne sera exécutée par aucun utilisateur root. Il peut s'agir de n'importe quel utilisateur normal.
Réponses:
Le scénario est normale que vous définissez
cgcreate
,cgset
,cgdelete
,cgget
, etc. comme racine . Finalement, le programme / script destiné à ne pas aspirer de nombreuses ressources sera exécuté en tant qu'utilisateur normal. Donc, configurez en tant que root, utilisez et exécutez en tant qu'utilisateur.Cela se fait avec les paramètres
-a
et-t
de lacgcreate
commande (exécutée en tant que root). Donc déjà lorsque vous créez un groupe. Dans mon cas:où monero est le nom d'utilisateur du futur utilisateur qui exécutera et exécutera le programme avec les restrictions cgroup. Pour la différence fine entre les sous
-a
--t
paramètres et, reportez-vous aux pages de manuel decgcreate
.Dans la plupart des cas, il s'agit du même utilisateur.
Ensuite, configurez les restrictions (toujours en tant que root):
Vérifiez vos entrées si vous souhaitez:
Et puis finalement changer d'utilisateur, dans mon cas, l'utilisateur monero, et à partir du bon dossier:
L'utilisateur n'aura aucune difficulté avec les autorisations ou ainsi que vous le configurez spécifiquement pour lui.
la source
Les implications de sécurité de ce côté, vous pouvez mettre le
setuid
bitpour donner aux utilisateurs non root qui exécutent ce programme le pouvoir root.
La recommandation serait de supprimer ensuite l'accès utilisateur normal
et créez un groupe spécial que vous souhaitez autoriser à utiliser cgcreate IE
cgusers
,et changez l'appartenance au groupe sur ces fichiers à ce groupe:
Tout cela serait exécuté par root, après quoi tous les utilisateurs du
cgusers
groupe s'exécuterontcgcreate
et encgdelete
tant que root au lieu d'être eux-mêmes. Vous auriez juste besoin d'avoir des membres que vous voudriez avoir ce pouvoir dans le bon groupe.la source
Les groupes de contrôle sont finalement gérés via le ou les systèmes de fichiers cgroup. La possibilité de créer des groupes de contrôle devrait simplement être la capacité de créer des répertoires sous celui-ci et d'écrire dans des fichiers. Si vous montez les FS cgroup avec des autorisations plus élaborées, ou si vous modifiez leurs autorisations à la volée, certains utilisateurs devraient pouvoir faire des choses. De toute évidence, vous ne pourrez pas ajouter les ID de processus du processus d'autres utilisateurs au fichier de tâches. Vous ne pourrez ajouter que votre utilisateur.
Cela dit, je ne suis pas sûr que ce qui précède soit mondial. Autrement dit, il est possible que certains groupes de contrôle ne prennent pas en charge cela.
Dans l'ensemble, la meilleure approche consiste à utiliser un gestionnaire de groupe de contrôle qui peut ensuite être chargé d'associer des tâches à un groupe de contrôle. Je crois que cgmanager fait quelque chose comme ça.
la source
La réponse courte est non.
Pour la création et l'attribution de propriété d'un groupe de contrôle, vous dépendez des privilèges root. Il n'y a aucun moyen fiable de contourner ce problème.
Cependant, vous pouvez créer un groupe de contrôle et attribuer la propriété à un certain utilisateur ou groupe.
Utilisateur
Groupe
la source