web-dev-qa-db-fra.com

Existe-t-il un moyen d'arrêter d'avoir à écrire «Sudo» pour chaque petite chose sous Linux?

Je vais faire une bonne quantité de PHP travail sous peu, et je suis intéressé à apprendre RoR, j'ai donc installé Linux Mint 12 dans ma VirtualBox.

Jusqu'à présent, l'aspect le plus frustrant du commutateur concerne les autorisations Linux. Il semble que je ne puisse rien faire d'utile (comme, disons, 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 simple de dire à Linux de me donner un accès illimité à certains répertoires sans simplement ouvrir toutes leurs autorisations?

66
Major Productions

Deux options me viennent à l'esprit:

  1. Possédez le répertoire de votre choix en utilisant chown:

    Sudo chown your_username directory 
    

    (remplacez votre_nom_utilisateur par votre nom d'utilisateur et votre répertoire par le répertoire que vous souhaitez.)

  2. L'autre chose que vous pouvez faire est de travailler en tant que root tant que vous SAVOIR CE QUE VOUS FAITES. Pour utiliser root do:

    Sudo -s
    

    et puis vous pouvez faire n'importe quoi sans avoir à taper Sudo avant chaque commande.

86
mtahmed

De manière générale, travaillez toujours en tant que votre propre utilisateur, sauf si vous faites quelque chose avec un impact à l'échelle du système.

S'il y a des fichiers que vous souhaitez mettre en place sur votre serveur Web, travaillez en tant que votre propre utilisateur, puis utilisez Sudo pour déposer les fichiers en place dans la zone de service Web de votre système de fichiers. Habituellement, cela serait effectué par un script d'installation, et vous exécuteriez 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 que vous souhaitez que vos fichiers soient accessibles instantanément, créez un répertoire dans la zone du serveur Web et rendez-le détenu ou au moins accessible en écriture par vous. Après cette opération unique (Sudo chown … ou Sudo -u webmaster setfacl …), vous n'aurez pas besoin de privilèges élevés pour les opérations quotidiennes.

Il est parfois pratique d'autoriser plusieurs utilisateurs à écrire dans un répertoire, ou autrement d'avoir des autorisations différentes pour plusieurs utilisateurs autres que le propriétaire ou pour plusieurs groupes. Listes de contrôle d'accès vous donne cette capacité. Voir Problèmes d'autorisation pour le répertoire partagé sur un serveur ou Problème d'autorisation de script de sauvegarde .

Cela a toujours été mon idéologie qu'en tant qu'utilisateur, vous pouvez faire ce que vous voulez sur Linux et pour tout le reste, il y a toujours Sudo. Sudo permet d'exécuter peu de choses comme certains autres utilisateurs, le plus souvent des cas comme root pour l'administration du système. Sudo a été une ressource plus avantageuse pour déléguer certaines de mes tâches et privilèges de routine en tant qu'utilisateur (root) à d'autres et aider à mieux gérer mon temps et d'autres sans augmenter les privilèges au-delà de ce qui est requis. En même temps, c'est ma confiance en eux qui garde leurs entrées présentes dans le fichier de configuration sudoers. Je ne sais pas si cela pourrait être lié, mais ce que je peux dire, c'est que Sudo vous donne une meilleure perspective de sécurité de qui tout et que peuvent-ils faire avec leurs privilèges de confiance. Même si quelque chose tourne mal, ils restent responsables. (Je peux toujours faire quelques pics sournois avec des informations de journal sudoers pour trouver les coupables également). Mes gars m'ont toujours exprimé leur inquiétude de devoir taper Sudo pour tout ce qu'ils voulaient faire avec des privilèges élevés dans l'environnement Linux. Ici, j'ai trouvé la même question aussi.

Pour voir les solutions et ma quête pour trouver les alternatives, je suis tombé sur Resource Based Access ControlsRBAC mais dans une autre terre d'aventure de Solaris avec des outils comme - pfexec etc. Cette approche est plus efficace car elle maintiendrait les privilèges des utilisateurs déjà élevés et ferait confiance à la conscience et à la vigilance de ce que les administrateurs système voudraient faire avec leurs privilèges.

Compte tenu des solutions disponibles de RBAC et de ses implémentations dans le monde Linux, je suis tombé sur

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

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

et bien qu'il existe d'autres implémentations, je les considérerais dans l'ordre supérieur de la liste. L'implémentation de RBAC demande beaucoup de travail dans une organisation, surtout quand il y a beaucoup d'utilisateurs. RBAC serait une meilleure solution dans des environnements homogènes. Cependant, lorsqu'il y a des installations Unix hétérogènes sur le réseau et que la base de données utilisateur est courante, cela peut échouer. SELinux n'étant pas évolutif/implémenté sous Solaris et les outils RBAC/pfexec ne sont pas implémentés sous Linux. Il existe différentes approches 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 peut être considéré comme une approche d'implémentation commune), comme sudoers est une approche à hôte unique ou n'est pas capable d'une configuration centralisée dans le réseau/domaine. /etc/sudoers doit être synchronisé à chaque changement. De plus, il y a une exigence de base de connaissances lors de l'utilisation du fichier sudoers, il est nécessaire de comprendre le langage de politique de la configuration sudoers pour ne pas faire d'erreurs et autoriser les octrois. RBAC peut offrir une approche centralisée dans une certaine mesure, alors que les profils de sécurité peuvent être communs, l'ajout/la suppression d'un utilisateur du rôle accordé peut être effectué à partir d'un seul endroit (c'est-à-dire l'endroit où les informations utilisateur/mot de passe/groupe sont stockées pour le domaine comme LDAP, NIS ou AD). Cela nécessiterait également implicitement de comprendre les commandes nécessaires pour fonctionner sur la base de données RBAC comme smexec, smmultiuser, étant peu nombreuses.

Sudo peut offrir une approche plus multiplateforme ici, car il fonctionne sur toutes les plates-formes Unix/similaires qui offrent les fonctionnalités setuid. Sudo et RBAC réussissent à accorder aux utilisateurs non root des privilèges qui peuvent être obtenus sans donner le mot de passe root lui-même. Sudo peut donner une approche plus fine/granulaire basée sur les arguments de ligne de commande qui peuvent être utilisés lors de l'exécution des commandes et se limiter uniquement à quelle commande avec des arguments peut être exécutée avec des privilèges élevés. Bien que RBAC puisse restreindre l'utilisation des commandes ou des fichiers binaires installés, mais n'a aucun contrôle sur les arguments de la ligne de commande. L'audit est bien meilleur et intégré dans l'environnement RBAC alors que Sudo, cela dépend de la configuration et aussi des contraintes de sécurité prises (comme ne pas accorder le Shell et en particulier les hôtes sont autorisés à se connecter aux autres hôtes sans aucun problèmes). Ce ne sont que quelques-unes des différences que je pourrais citer et j'ai personnellement tendance à utiliser Sudo plutôt que RBAC, bien qu'avec lesdites limitations, je pourrais surmonter la mise en œuvre de certains contournements. Jusqu'à ce que tous les problèmes soient résolus par RBAC pour améliorer l'avantage de Sudo, je ne pense pas que Sudo s'en ira car c'est simple.

3
Nikhil Mulley

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

3
ajreal

Je voudrais montrer la racine du document où vous travaillez, donc vous y avez pleinement accès.

Pour éviter d'avoir à 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/

Cela vous facilitera la vie 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.

1
Catharz

Modifiez le fichier/etc/passwd et accordez des autorisations root à l'utilisateur "yourUserName" en changeant les ID utilisateur et groupe en UID 0 et GID 0:

yourUserName: 0: 0 ::/home/yourUserName:/bin/sh

0
Ufuk özkanlı

Comme indiqué dans d'autres réponses, la solution la plus propre consiste à changer la propriété des fichiers et répertoires auxquels vous devez accéder. Vous pouvez également créer un nouveau groupe dédié, modifier la propriété du groupe des fichiers et répertoires en ce groupe et définir l'autorisation d'écriture de 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éritera de la propriété du groupe du répertoire contenant (c'est-à-dire le groupe dédié).

0
countermode

Exécutez la commande.

Sudo su root

Vous pourrez désormais 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 d'enregistrer et de modifier des fichiers.

0
Sbossb