Comment empêcher un nouvel utilisateur de faire quelque chose de dangereux?

31

J'ai récemment installé le serveur Ubuntu sur mon serveur pour essayer le Linux en tant que nouvel utilisateur. J'ai suivi un tutoriel sur la façon de configurer le serveur Web, ce qui signifie que j'ai besoin de chmod 777 le répertoire du serveur Web pour pouvoir y écrire.

Quoi qu’il en soit, j’ai créé un nouveau compte pour un mec pour lui permettre de voir des fichiers sur le serveur que j’ai placés dans son répertoire personnel:

adduser francis

Après avoir créé le compte, j'ai vérifié quel accès il avait avec

groups francis

Il a dit "francis: francis", donc pas un problème je pensais, l'ubuntu ne l'a pas inclus dans les groupes par défaut, ce qui est logique, il l'a créé sans autorisations supplémentaires en termes de sécurité, donc tout va bien et dandy. Une semaine plus tard, en toute horreur, j'ai découvert que même s'il ne pouvait pas faire des choses comme SUDO ou déraper dans les répertoires système, il avait un accès total à presque tout le reste sur le serveur. Par exemple, il avait un accès en lecture / écriture complet aux fichiers de mon serveur Web sur / var / www (et donc aux mots de passe stockés dans les fichiers de configuration php, etc.) même si ce répertoire ne se trouve pas dans son répertoire personnel. accéder à ce répertoire, ni je lui ai accordé un accès spécial à rien après avoir fait le adduser.

Quoi qu’il en soit, que se passe-t-il ici? Comment puis-je tuer son accès à quelque chose d'important? Il ne devrait pas pouvoir accéder à des choses comme / media ou / var / www. Je pensais que les nouveaux utilisateurs étaient par défaut empêchés de faire quoi que ce soit de dangereux ou de fouiller là où ils ne devraient pas l'être.

Donc, pour résumer, je n’ai qu’à lui permettre d’accéder aux répertoires sur lesquels je spécifie manuellement + vers les répertoires dont il a besoin pour fonctionner correctement (son répertoire personnel, vim, nano, etc.)

Merci

    
posée Askerman 27.09.2016 - 16:33
la source

5 réponses

41

C'est comme prévu. Et pire chmod 777 signifie ... "Je voudrais que le propriétaire, quiconque dans son groupe et quiconque ait des droits en lecture, écriture et exécution"

Ce qui est assez terrible.

Et pour un serveur Web, 777 n'est pas optimal. 755 (le propriétaire a un groupe d'autorisations complet et que d'autres ont lu + exécuté) est un défaut commun mais de ce que vous avez dit vouloir au moins une lecture-écriture ou une lecture-écriture pour le propriétaire (le utilisateur du serveur Web), et peut-être le groupe, et aucune autorisation pour l'utilisateur. Il y a des questions plus complètes sur les niveaux d'autorisations appropriés sur serverfault mais considérez quelque chose comme 640 ou 740.

Cela dit, vous pouvez également placer l’utilisateur dans son propre petit monde - configurer chroot pour garder l’utilisateur dans son propre espace dans le système. Il existe des guides pour ce faire - par exemple, La réponse de oli est excellente ici , ce qui peut être une option en fonction de vos besoins.

    
réponse donnée Journeyman Geek 27.09.2016 - 17:12
la source
19

Essentiellement, il se décompose comme ceci:

R = 4 (read)
W = 2 (write)
X = 1 (execute)

Donc, les autorisations de lecture seraient seulement 4, la lecture et l’écriture seraient 6, la lecture et l’exécution seraient 5 et tout (lecture, écriture, exécution) est 7. Voici comment calculer un octet de permission pour un propriétaire , groupe de propriétaires ou tout le monde.

Lorsque vous appliquez ces autorisations avec chmod à un emplacement de fichier ou de répertoire, les nombres calculés ci-dessus sont appliqués comme ceci, avec un octet pour chaque propriétaire, groupe et tout le monde:

     $ chmod _ _ _ <file or directory>
             | | |
owner--------  | |
owner's group--  |
everyone---------

Donc, si je voulais me donner, à mon groupe, lire, écrire et exécuter des autorisations sur un dossier que je possédais, mais je ne voulais pas que tous puissent le lire, je d utiliser:

$ chmod 770 myDirectory

Pour plus d'informations, consultez la page de manuel relative à chmod :

$ man chmod
    
réponse donnée Aaron 27.09.2016 - 17:42
la source
6

Comme d’autres l’ont mentionné, vous ne devriez pas avoir les permissions sur 777

Voici une feuille de référence utile que j'utilise.

+-----+---+--------------------------+
| rwx | 7 | Read, write and execute  |
| rw- | 6 | Read, write              |
| r-x | 5 | Read, and execute        |
| r-- | 4 | Read,                    |
| -wx | 3 | Write and execute        |
| -w- | 2 | Write                    |
| --x | 1 | Execute                  |
| --- | 0 | no permissions           |
+------------------------------------+
You can use the octal notation, where the three digits correspond to the user, then group, then other. 
Perhaps this might help 
+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------  | 700  | User  |
| ---rwx---  | 070  | Group |
| ------rwx  | 007  | Other |
+------------+------+-------+
    
réponse donnée WhyAyala 28.09.2016 - 19:33
la source
3

Afin de partager des fichiers avec une personne à laquelle vous vous êtes connecté, vous n'avez rien à faire de particulier. Sur une installation Debian par défaut, les utilisateurs ont accès aux répertoires personnels de chacun.

Par exemple,

$ ls -ld ~
drwxr-xr-x 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

Les autorisations sur mon répertoire personnel sont read (r) et access (x) pour tout utilisateur de mon système. Seulement, j'ai en plus accès à write (w) .

Par ailleurs, la valeur par défaut de umask sur Ubuntu est telle que les fichiers et les répertoires créés par les utilisateurs sont lisibles par par défaut . Vous pouvez définir umask à 077 si vous ne le vouliez pas.

Qu'est-ce que cela signifie que dans une configuration par défaut, si l'utilisateur you veut partager le document ~/README.txt avec moi, alors il n'y a rien à faire. Je peux simplement le voir:

$ who am i
zwets    pts/26       2016-09-29 08:05 (:pts/19:S.6)
$ ls -l ~you/README.txt
-rw-r--r-- 1 you you 24 Sep  8 11:23 /home/you/README.txt
$ cat ~you/README.txt
You's shared thoughts.

Je ne peux pas modifier ou supprimer le fichier, mais je peux le copier dans un emplacement où je suis autorisé à écrire. Ensuite, je possède la copie:

$ echo "Adding my thoughts." >> ~you/README.txt
bash: /home/you/README.txt: Permission denied
$ rm ~you/README.txt
rm: remove write-protected regular file '/home/you/README.txt'? yeah!
rm: cannot remove '/home/you/README.txt': Permission denied
$ cp ~you/README.txt ~zwets
$ ls -l ~/README.txt
-rw-r--r-- 1 zwets zwets 24 Sep  29 14:09 /home/zwets/README.txt

Il y a de bonnes raisons pour lesquelles la majeure partie du système est lisible par défaut, comme je l'ai expliqué dans une autre réponse sur AskUbuntu . Cependant, sur un système partagé, il peut être judicieux de rendre les répertoires d’accès inaccessibles aux non-propriétaires:

$ chmod o-rwx ~
$ ls -l ~
drwxr-x--- 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

comme de nombreux utilisateurs ne sont apparemment pas au courant de la valeur par défaut - QED ;-). Il serait toutefois plus sage de sensibiliser les utilisateurs au fait que les autorisations de fichiers ne protègent pas les secrets.

    
réponse donnée zwets 29.09.2016 - 13:52
la source
1

Dans Ubuntu, tout utilisateur disposant du privilège de superutilisateur ajouté dans le groupe 'sudo', veuillez le vérifier pour vous assurer qu'aucun autre utilisateur n'est ajouté dans ce groupe.

Pour sécuriser vos fichiers et répertoires des autres utilisateurs, vous pouvez définir la permission comme suggéré par M. Journeyman Geek dans la réponse ci-dessus.

Vous pouvez également utiliser des autorisations spéciales pour sécuriser vos fichiers et répertoires d’autres utilisateurs.

    
réponse donnée Puneet Dixit 28.09.2016 - 09:43
la source

Lire d'autres questions sur les étiquettes