Je peux configurer sudo (via le fichier sudoers) pour permettre à un utilisateur d'exécuter les commandes chown
et chmod
sur n'importe quel fichier ou répertoire du système. Cependant, je veux seulement accorder à un utilisateur l'autorisation d'exécuter ces commandes sur des fichiers qui se trouvent sous le /var/www/html
répertoire.
Comment puis-je restreindre les commandes privilégiées de sorte que l'utilisateur ne puisse les exécuter que dans un répertoire prédéfini?
Par exemple: La commande suivante accorde 777 autorisations de index.html
fichier.
sudo chmod 777 /var/www/html/index.html
Maintenant, je veux effectuer deux actions
Restreindre de
sudo
telle sorte que l'utilisateur ne puisse exécuterchmod
et àchown
partir de l'intérieur/var/www/html
Interdire à l'utilisateur d'exécuter ces commandes ailleurs dans le système (par exemple, les commandes ne peuvent pas être exécutées dans
/var/www
ou/var/ftp
)
www-data
groupe éliminant le besoin dechmod
/chown
quoi que ce soit?chown
. En dehors de cela, je ne vois aucune raisonchmod
de l'exécuter en tant que root.Réponses:
Ce que vous demandez est difficile, voire impossible. Même si vous restreignez l'application de
chown
etchmod
aux fichiers d'un répertoire spécifique, quelqu'un peut toujours passer un lien symbolique et affecter ainsi les fichiers où bon leur semble.Heureusement, il est fort probable que ce que vous essayez de faire n'est tout simplement pas la bonne solution à votre problème réel, et il existe une autre méthode qui fonctionne.
Habituellement, les utilisateurs qui ont besoin d'autorisations supplémentaires pour créer et modifier des fichiers sous
/var/www
sont ajoutés à un groupe (souventwww-data
, ou vous pouvez avoir des groupes différents pour différentes parties du site). Vous pouvez utiliser la propriété du groupe et les répertoires setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/html
permet à tous leswww-data
membres du groupe d'écrire dans le/var/www/html
répertoire, et les fichiers créés dans ce répertoire appartiendront auwww-data
groupe au lieu du groupe principal de l'utilisateur qui a créé le fichier. Cependant, ce n'est pas très flexible.Ce que vous devriez probablement faire, c'est configurer des listes de contrôle d'accès pour les fichiers sous
/var/www
. Tout d'abord, assurez-vous que les ACL sont activées: le système de fichiers activé/var/www
doit être monté avec l'acl
option. Voir Rendre tous les nouveaux fichiers dans un répertoire accessible à un groupe pour obtenir de l'aide à ce sujet. Installez également les utilitaires ACL (getfacl
etsetfacl
). Donnez ensuite des autorisations supplémentaires à l'arborescence sous/var/www/html
aux utilisateurs qui devraient les avoir. Vous pouvez définir des ACL par utilisateur, mais il est souvent plus facile de placer des utilisateurs qui devraient avoir les mêmes droits sur une partie du système de fichiers dans un groupe et de définir des ACL pour ce groupe. Par exemple, si les utilisateurs du groupehtml-writers
doivent avoir un accès en lecture-écriture à l'arborescence sous/var/www/html
:la source
Vous pouvez restreindre la commande à être utilisée par "myuser" avec tous les arguments dans le
/etc/sudoers
fichier avec la commandevisudo
add:activer la journalisation pour chaque opération en ajoutant:
exemple de sortie:
Lorsque vous utilisez sudo, le principe doit être que "myuser" est une personne de confiance. Attention aux autorisations de fichiers, il n'y a pas de moyen simple d'empêcher un utilisateur sudo malveillant de lier un fichier à partir d'une ressource externe et de le modifier.
la source
su - prashant
ousu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
Et si vous corrigez cela d'une manière ou d'une autre,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
Il existe en fait un moyen assez simple de le faire, en créant un script Bash (ou shell de votre choix) pour limiter les modifications apportées à un fichier ou un répertoire particulier.
Dans votre exemple, cela ressemblerait à ceci:
Ensuite, vous devez modifier le fichier sudoers pour permettre à www-data d'exécuter / usr / local / bin / mychmod.
Gardez cependant à l'esprit que permettre à l'utilisateur de saisir (par exemple, permettre à un utilisateur de changer le fichier ou le répertoire modifié) dans cet espace est extrêmement dangereux, et vous devez savoir comment filtrer les attaques par injection si vous voulez faire quelque chose comme cette. Un attaquant pourrait facilement exécuter n'importe quelle commande en tant que root de cette façon, compromettant efficacement la sécurité de votre système.
la source