Je travaille avec un membre du support technique pour un produit, et il insiste sur le fait que je dois être root pour installer une série de correctifs, et que sudo ne fonctionnera pas. il ne fournit aucune raison mais semble très ferme dans ses convictions. Surfer sur le superutilisateur Je ne peux déterminer aucune raison possible pour que ce soit le cas, et en confirmation, lorsque je lance:
sudo -l
Je reçois:
...
User [MY USERNAME] may run the following commands on this host:
(ALL) ALL
Obtenir l'accès à partir de l'équipe Linux / serveur pour être réellement root n'est pas un processus immédiat, si je comprends bien, je préférerais donc les installer moi-même.
Existe-t-il une raison pratique pour laquelle sudo se comporterait différemment que root pour l'installation de logiciels sur un serveur?
sudo
et les scripts tels que les scripts sont actuellement écrits. Si tel est le cas, la réponse de sds pourrait être plus utile pour vous:sudo su -
.Réponses:
Cela dépend fortement de la façon dont vous appelez votre programme avec
sudo
ousu
.Par exemple sur le système sur lequel je suis en ce moment:
Où [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Env = Les variables d'environnement sont réinitialisées pour 1 et 5, à partir de $ USER dans 2,3,4.
Ainsi , un script ou un programme qui est lancé avec une autre option peut voir différents
$PATH
,$HOME
, sa coquille peut lire différents.bashrc
,.profile
et les variables de l' environnement. Il lit le fichier lié à la$HOME
. Chaque utilisateur peut modifier son environnement de manière différente (variables$PATH
, .bashrc, .profile, .bash_profile, alias ...). En particulier, un utilisateur peut avoir un ordre différent des répertoires dans son répertoire$PATH
et, en conséquence, un script peut exécuter une commande, par exemple in à la/home/$USER/bin
place de celle du chemin attendu de la racine.Vous pouvez exécuter le programme sous
sudo -i
car vous avez été connecté en tant que rootsu -
, mais vous pouvez avoir un comportement différent si vous l'exécutez avecsudo MyCommand
ou avecsu -c MyCommand
.De
man su
:De l'homme
sudo
la source
sudo
peut être limité par des autorisations dans le fichier sudoers par opposition à faire des choses en tant que root n’a pas ces limitations? La dernière citation de bloc implique peut-être cela, mais si je comprends bien, cela semble être une différence de fond autre que l'environnement (ou peut-être à cause de l'environnement?).Si vous avez un
sudo
accès complet , vous pouvezroot
utilisersudo su -
, le point de sécurité est donc devenu inutile.En effet, il existe un moyen de discerner la différence entre un programme exécuté en tant
root
que programme et un programme exécuté soussudo
-utilisantgetuid
vsgeteuid
- mais c’est une astuce artificielle. Pourquoi un système de patch ferait-il cela?la source
su -
, il peut vouloir utilisersudo -i
pour avoir le même environnement que lorsqu’il se connecte directement.sudo myscript
vous conserverez les variables d'environnement $ PATH et du shell dans lequel vous vous trouvez. Si vous courez avecsudo -i myscript
vous, courez comme si vous vous connectiez en tant que root. Voir la réponse avec notre _zoo d'appels :-) _sudo
que si vous vous connectez en tant que rootgeteuid()
etgetuid()
d’être différents, est un mythe. su et sudo remplacent les ID utilisateur réel et effectif par ceux de l'utilisateur cible avant d'exécuter la commande ou le shell spécifié, sauf dans le cas très inhabituel où vous les avez explicitement configurés pour qu'ils se comportent autrement. Vous pouvez le vérifier (pour sudo) en exécutantsudo id -u
etsudo id -ru
(les deux affichent 0), en lisant sudo (8) (sous COMMAND EXECUTION ) ou en écrivant un programme de test .Comme vous le remarquez @Hastur, il existe quelques différences si vous obtenez un shell racine.
Si vous n'obtenez pas un shell racine, il y a plus de différences. Le membre du support technique peut avoir déjà essayé de faire des choses comme
sudo patch -p0 < /root/patch.file
oùpatch
est exécuté en tant que root, mais ce<
n’est pas le cas (la tuyauterie à partir d’un fichier).la source
sudo /bin/bash -c "./patch -p0 < /root/patch"
. Encore plus délicat est le cas lorsque vous utilisez la redirection pour créer un fichier>
. Dans un premier temps, vous créerez un fichier appartenant à l'utilisateur uniquement si vous avez le droit d'écrire dans le répertoire final. De cette manière, vous créerez un fichier appartenant à root ... la face cachée de Unix ;-)Je crois que lors de l’utilisation de l’accès sudo, un fichier journal est créé, mais lorsqu’il s’exécute directement via l’accès root, il n’existe
la source
Cela dépend du degré de finesse de votre accès racine. Si vous avez plusieurs utilisateurs qui effectuent différentes tâches sur un système, alors sudo serait plus idéal. Un exemple que j'utilise fréquemment est la nécessité de redémarrer une application ou une base de données. La sécurité est toujours mieux faite avec le moins de privilèges. J'utilise des groupes et n'autorise que ces groupes à effectuer des actions explicites. Un bon livre décrivant ce processus est "Maîtrise Sudo: Contrôle de l'accès des utilisateurs réels". En fait, c’est un bon livre sur le sudo en général ...
la source