Existe-t-il un moyen de ne plus avoir à écrire 'sudo' pour chaque petite chose sous Linux?


59

Je vais bientôt faire pas mal de travail sur PHP, et je suis intéressé par l’apprentissage de RoR. J’ai donc installé Linux Mint 12 dans ma VirtualBox.

L’aspect le plus frustrant du commutateur, jusqu’à présent, a été de traiter avec les autorisations Linux. Il semble que je ne puisse rien faire d’utile (par exemple, copier l’archive Symfony2 de mon répertoire Téléchargements vers la racine de mon document et l’extraire) sans me faire passer pour la racine via sudo.

Existe-t-il un moyen facile de dire à Linux de me donner un accès sans entrave à certains répertoires sans simplement ouvrir toutes leurs autorisations?


1
De nombreuses distributions auront un groupe habilité à éditer la configuration de divers utilitaires système. Mettez-vous dans ce groupe et ouvrez un nouveau shell.
dmckee

Serait-il préférable de pointer la racine du document vers quelque chose de mon répertoire de base?

3
Le "sudo" fait partie de ces commandes ridicules utilisées et abusées trop fréquemment par les nouveaux utilisateurs de Linux. Souvent, je vais voir des tutoriels sur le Web où 15 commandes consécutives vont utiliser sudo? Dans des situations normales, vous ne devriez pas avoir besoin de permanentes spéciales lorsque vous êtes connecté en tant qu'utilisateur régulier (recommandé). J'étais dans une entreprise où tout ce qu'ils faisaient utilisait du sudo. Quand j'ai essayé de l'interdire (pour des raisons de sécurité), ils se sont plaints. Après avoir examiné le fichier de configuration sudo cryptique, j'ai découvert une faille (comme toujours) qui me permettait de "rooter" le système de cet utilisateur normal. Sudo est extrêmement dangereux !!
Jeach

Réponses:


77

Deux options me viennent à l’esprit:

  1. Possédez le répertoire que vous voulez en utilisant chown:

    sudo chown your_username directory 
    

    (remplacez votre nom d'utilisateur par votre nom d'utilisateur et votre répertoire par le répertoire de votre choix.)

  2. Vous pouvez également travailler en tant que root tant que vous SAVEZ CE QUE VOUS FAITES . Pour utiliser root faire:

    sudo -s
    

    et alors vous pouvez faire n'importe quoi sans avoir à taper sudoavant chaque commande.


"L'autre chose que vous pouvez faire est de travailler en tant que root tant que vous SAVEZ CE QUE VOUS FAITES. Utiliser root do ..." - Cela annule la meilleure pratique que la communauté de la distribution et de la sécurité tente d'utiliser pour enseigner aux utilisateurs. Connexe: "quel est le principe du moindre privilège" .

16

De manière générale, travaillez toujours comme votre propre utilisateur, sauf si vous faites quelque chose qui a un impact sur l'ensemble du système.

Si vous souhaitez installer des fichiers sur votre serveur Web, utilisez-le comme votre propre utilisateur, puis sudodéposez-les dans la zone de service Web de votre système de fichiers. Habituellement, cela est effectué par un script d'installation et vous exécutez quelque chose comme sudo -u webmaster install-webserver-files, ou mieux sudo -u webmaster git update(ou le système de contrôle de version de votre choix).

Si vous travaillez sur un serveur de développement et souhaitez que vos fichiers soient accessibles instantanément, créez un répertoire dans la zone du serveur Web et attribuez-lui la propriété ou au moins l'écriture. Après cette opération unique ( sudo chown …ou sudo -u webmaster setfacl …), vous n'aurez plus besoin de privilèges élevés pour vos opérations quotidiennes.

Il est parfois pratique de permettre à plusieurs utilisateurs d'écrire dans un répertoire ou d'avoir des autorisations différentes pour plusieurs utilisateurs autres que le propriétaire ou pour plusieurs groupes. Les listes de contrôle d'accès vous donnent cette possibilité. Reportez-vous à la section Problèmes d'autorisations pour le répertoire partagé sur un serveur ou le problème d'autorisation de script de sauvegarde .


3

Oui, connectez-vous en tant que root, ce qui vous donne le contrôle d’accès super utilisateur.
Même concept dans Windows, vous pouvez vous connecter à votre terminal à l’aide d’administrateur.


Je réalise que vous répondez directement à la question de l'affiche originale. Mais c'est un mauvais conseil, ce qui explique le vote à la baisse.
Bignose

Comme ça, tu la rapportais à Windows.
LeWoody

3

C'est depuis toujours mon idéologie qu'en tant qu'utilisateur, vous pouvez faire ce que vous voulez sous Linux et pour tout le reste, il y en a toujours sudo. sudopermet d'exécuter peu de choses que d'autres utilisateurs, le plus souvent dans le cas de l' rootadministration système. sudoa été une ressource plus avantageuse pour déléguer certaines de mes tâches courantes et privilèges en tant qu’utilisateur (root) à d’autres et pour aider à mieux gérer mon temps et le temps des autres sans élever les privilèges au-delà de ce qui est requis. Dans le même temps, c’est ma confiance en eux qui garde leurs entrées présentes dans lesudoersfichier de configuration. Je ne sais pas si cela pourrait être lié, mais que puis-je dire, c’est que sudo vous donne une meilleure perspective de sécurité pour savoir qui est tout et que peut-il faire avec ses privilèges de confiance. Même si quelque chose ne va pas, ils restent responsables. (Je peux toujours faire quelques pointes sournoises avec des informations de journal sudoers pour trouver les coupables également). Mes gars m'ont toujours dit qu'ils devaient taper sudo pour tout ce qu'ils voulaient faire avec des privilèges élevés dans un environnement Linux. Ici, j'ai trouvé la même question aussi.

Pour voir les solutions et ma quête pour trouver des alternatives, je suis tombé sur les contrôles d’accès basés sur les ressources,RBAC mais dans une autre aventure Solarisavec des outils tels que pfexecetc. sur la conscience et la vigilance de ce que les administrateurs système voudraient faire de leurs privilèges.

Considérant les solutions disponibles de RBAC et ses implémentations dans le monde Linux, je suis tombé par hasard sur

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

et bien qu'il y ait d'autres implémentations, je les considérerais dans le haut de la liste. L'implémentation de RBAC représente un travail considérable dans une organisation, en particulier lorsque les utilisateurs sont nombreux. RBAC semblerait une meilleure solution dans des environnements homogènes. Cependant, lorsqu'il existe des installations Unix hétérogènes sur le réseau et que la base de données des utilisateurs est commune, cela pourrait peut-être échouer. SELinux n'étant pas évolutif / implémenté sous Solaris, les outils RBAC / pfexec ne sont pas implémentés sous Linux. Différentes approches existent pour faire une seule chose. Par exemple: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Différentes installations à l'échelle du réseau peuvent ne pas prendre en charge cette approche (cependant, openrbac pourrait être considéré comme une approche d'implémentation commune), comme sudoers est une approche à hôte unique ou n'est pas capable de configuration centralisée dans le réseau / domaine./etc/sudoersbesoin d'être synchronisé à chaque changement. De plus, il existe une exigence de base de connaissances lors de l’exploitation du fichier sudoers: il est nécessaire de comprendre le langage de politique de la configuration de sudoers afin de ne commettre aucune erreur et d’autoriser les octrois. RBAC peut offrir une approche centralisée dans une certaine mesure, tandis que les profils de sécurité peuvent être communs, l’ajout / la suppression d’un utilisateur du rôle attribué peut être effectuée à partir d’un seul endroit (c’est-à-dire l’endroit où les informations utilisateur / mot de passe / groupe sont stockées domaine comme LDAP, NIS ou AD). Cela impliquerait également implicitement de comprendre les commandes nécessaires pour opérer sur la base de données RBAC, telles que smexec, smmultiuser, étant peu nombreuses.

Sudo peut offrir une approche plus multiplateforme, même dans ce cas, il fonctionne sur toutes les plates-formes Unix / similaires qui offrent les fonctionnalités setuid. sudoEt tous deux RBACréussissent à donner aux utilisateurs non-root des privilèges qui peuvent être obtenus sans donner le rootmot de passe lui-même. Sudo peut donner une approche plus fine / granulaire sur les arguments de ligne de commande pouvant être utilisés lors de l'exécution des commandes et limiter uniquement les commandes avec arguments pouvant être exécutées avec des privilèges élevés. Bien que RBAC puisse restreindre l'utilisation des commandes ou des fichiers binaires installés sans avoir le moindre contrôle sur les arguments de ligne de commande. L’audit est bien meilleur et intégré à l’environnement RBAC alors quesudoCela dépend de la configuration et des contraintes de sécurité (par exemple, ne pas accorder le shell et en particulier, les hôtes sont autorisés à se connecter aux autres hôtes sans aucun problème). Ce ne sont là que quelques-unes des différences que je pourrais citer. Personnellement, j’ai tendance à utiliser le sudo plutôt que le RBAC, bien qu’avec ces limitations, je puisse surmonter certaines difficultés. Jusqu'à ce que tous les problèmes soient résolus par RBAC afin de mieux tirer parti de sudo, je ne pense pas que sudo disparaîtra, car c'est simple.


1

Je voudrais chown la racine du document où vous travaillez, de sorte que vous avez un accès complet à celui-ci.

Pour éviter de devoir taper sudo chaque fois que vous installez une gemme, suivez cet article ici: http://forums.site5.com/showthread.php?t=11954

Je recommande également fortement d’installer RVM pour gérer les versions de Ruby et Rails. http://beginrescueend.com/

Votre vie sera beaucoup plus facile lorsque vous trouverez l'hôte sur lequel vous souhaitez déployer votre application en utilisant des versions différentes de celles que vous avez développées.


Je savais à propos de RVM, mais merci pour le lien du forum.
Major Productions

0

Exécutez la commande.

sudo su root

Vous pourrez maintenant exécuter des commandes en tant qu'utilisateur root. Faites attention! Toute commande exécutée sera en tant qu'utilisateur root. Vous pouvez sérieusement gâcher les choses si vous ne faites pas attention.

Ou vous modifiez les autorisations du répertoire pour permettre à votre utilisateur de sauvegarder et de modifier des fichiers.


4
Pourquoi pas juste sudo -s?
sarnold

1
Ou sudo -icomme cela simule comme shell de connexion. Cela pourrait être un peu plus proche d'une connexion racine locale que de lancer bash ou un autre shell via sudo.
Bastian Ebeling

1
pourquoi pas seulement su? Quelle est cette obsession de sudo? Tu n'as pas besoin de sudo. Déjà.
orion

2
autant que je sache, il n'est pas possible d'utiliser simplement susi le mot de passe root est inconnu. l'ajout d'un utilisateur aux sudoers et l'exécution sudo supermettent à l'utilisateur d'utiliser son mot de passe utilisateur existant et connu pour remonter
Luke

0

Editez le fichier / etc / passwd et accordez les droits root à l'utilisateur "yourUserName" en modifiant les ID d'utilisateur et de groupe en UID 0 et GID 0:

votreUserName: 0: 0 :: / home / votreUserName: / bin / sh


2
Ne recommandez pas de cauchemars de sécurité! C'est une pratique de la pire sorte.
contre-mode

J'utilise cette solution pour ma framboise pi dans laquelle je n'ai pas d'autres comptes d'utilisateur et qu'elle est connectée à mon réseau domestique
Ufuk özkanlı

0

Comme indiqué dans d'autres réponses, la solution la plus propre consiste à modifier la propriété des fichiers et des répertoires auxquels vous devez accéder. Vous pouvez également créer un nouveau groupe dédié, changer la propriété du groupe des fichiers et répertoires sur ce groupe et définir les droits en écriture du groupe pour ces fichiers et répertoires. Enfin, définissez le bit SGID sur les répertoires de sorte que, si vous créez un nouveau fichier, il hérite de la propriété du groupe du répertoire contenant (c'est-à-dire du groupe dédié).


-1

utilisateur @ serveur: ~ $ sudo passwd racine
[sudo] mot de passe de l'utilisateur:
entrez un nouveau mot de passe UNIX:
retapez le nouveau mot de passe UNIX:
passwd: mot de passe mis à jour avec succès
utilisateur @ serveur: ~ $ su
Mot de passe:
root @ serveur: / home / utilisateur #

Est-ce que "#" invite pas une chose de beauté?

J'utilise "sudo" une fois seulement pour obtenir la capacité de

utilisateur @ serveur: ~ $ su
Mot de passe:
racine @ serveur: / home / utilisateur #

pour la vie du serveur.

Pour le rendre à nouveau en sécurité,

root @ server: / home / user # exit
exit
utilisateur @ server: ~ $

Les administrateurs système le font depuis des années, alors que "sudo" ne faisait pas partie de la tendance du mollycoddling.

Lorsque vous faites cela, il est de votre responsabilité de prendre soin de vous, pas de la mienne.

Ian


Quel violon. Essayez sudo -s. Travail fait
roaima
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.