Comment puis-je définir un mot de passe pour la commande 'rm'?

29

Mes amis continuent à supprimer mes fichiers en utilisant le terminal. Alors, aidez-moi en expliquant comment créer un mot de passe pour la commande rm .

    
posée aswin 27.12.2016 - 13:25
la source

10 réponses

46

Il n’ya pas de moyen facile de définir un tel mot de passe sur la commande rm elle-même, sans trop de piratage de code qui casserait probablement des choses comme apt-get installer des paquets et supprimer des fichiers. le mot de passe mille fois, ou potentiellement perturber l'accès à la commande aux personnes qui en ont besoin (comme vous, pour supprimer vos propres fichiers). Vous pouvez en quelque sorte faire cela en ayant plusieurs comptes d'utilisateurs et plusieurs ensembles d'autorisations d'accès, et en limitant l'accès à différentes sections de données, telles que votre répertoire personnel, afin qu'elles ne puissent pas y accéder.

(L’autre option concerne les comptes utilisateurs individuels pour chaque utilisateur, puis les listes de contrôle d’accès, comme indiqué dans la autre réponse qui a été publié par Videonauth )

Voici le problème principal: vous laissez vos amis utiliser votre système. Cela a des conséquences sur la sécurité - le concept de "toute personne ayant un accès physique à la boîte sera capable de contrôler le système et d'effectuer des tâches". , c’est pourquoi vous ne partagez pas l’accès aux systèmes physiques, sauf avec le personnel autorisé de confiance.

Le seul moyen vraiment de le faire est de ne pas donner à vos amis l’accès à votre ordinateur et de leur donner un "système" invité "dédié" qu'ils peuvent utiliser, que vous ne vous souciez pas vraiment des fichiers sur autant. C'est le moyen le plus sûr de garder vos fichiers en sécurité.

Bien sûr, si ce n’est pas une option, votre seule option vraiment sûre consiste à configurer plusieurs comptes d’utilisateur, un pour chaque utilisateur, avec des dossiers d’accueil différents, et ne leur permet pas d’accéder à votre propre répertoire les répertoires personnels des autres utilisateurs. Et puis gardez tout ce que vous ne voulez pas qu'ils touchent dans votre répertoire personnel, et ne leur donnez pas sudo access, le mot de passe root ou partagez votre mot de passe avec eux.

Voici comment vous allez faire ça:

Disons que mon nom est "Foo" et que je souhaite que l’utilisateur "Bar", un ami, utilise mon système mais n’accède pas à mes fichiers. La première étape consiste à refuser l’accès à toute personne autre que moi à mon répertoire personnel. Ceci permet aux autres utilisateurs de ne pas supprimer vos fichiers, mais aussi d’empêcher les autres utilisateurs de fouiner dans votre répertoire personnel et de voir quels types d’informations vous avez dans votre répertoire personnel:

chmod 750 /home/Foo

La deuxième étape consiste à créer un compte utilisateur pour "Bar" (ne tapez PAS ce qui est indiqué entre parenthèses ci-dessous, mais uniquement à titre d’information). De cette façon, nous pouvons nous assurer qu’il dispose de ses propres droits d’accès:

sudo adduser --create-home --user-group --shell /bin/bash Bar
sudo passwd Bar
(set a temporary password - you will not see characters as you type though)

La troisième étape, third , consiste à restreindre également leur répertoire personnel, de sorte que personne ne puisse y accéder. Cela ne fait que rendre les choses égales.

sudo chmod 750 /home/Bar

Lavez-vous les mains, rincez-les bien, puis répétez ces étapes pour le nombre d'utilisateurs que vous avez sur le système. Ils ne pourront pas accéder à vos fichiers et, puisque vous ne leur accorderez pas de privilèges d’administrateur, ils ne pourront pas supprimer vos fichiers sans essayer de le faire à sudo . ne peut pas toucher vos affaires. Et ils ne pourront pas non plus voir vos fichiers sans devenir superutilisateur, ce qui ne se produira pas ici.

Rappelez-vous toujours ceci: En donnant à quelqu'un un accès physique à la machine ou un accès en général, vous allez mettre vos fichiers et vos données en danger. C’est un fait largement accepté dans le monde de la sécurité informatique et qui continue de s’appliquer. Donner à vos amis l’accès à votre ordinateur mettra toujours vos données en péril, alors donnez-leur leur propre système, ou ne leur donnez simplement pas accès à votre machine .

Juste une note sur le chiffrement de disque

Bien que le cryptage sur disque fonctionne bien pour protéger vos données d'un tiers, il existe des limitations.

  1. Si le système est allumé, le disque est déjà déchiffré, vous êtes donc en danger.
  2. Certains systèmes ont des approches de chiffrement de disque cassées . Par exemple, certains systèmes Acer utilisent votre mot de passe pour autoriser uniquement le chiffrement / déchiffrement et utiliser des mots de passe codés en dur, ou utiliser un chiffrement faible qui est facilement craqué.
  3. Il existe toujours des méthodes pour pénétrer dans les «clés» ou essayer de les extraire de la mémoire juste après la mise hors tension du système, mais avant que les données de la RAM ne soient «supprimées» ou détériorées. (Je n'irai pas en profondeur sur ces points, mais ces risques existent ).
  4. L'accès physique à la machine, que le système soit crypté ou non, mettra toujours vos données en danger. Ne donnez pas d'accès physique (ou d'accès réseau distant) aux personnes auxquelles vous ne souhaitez pas donner un accès complet à votre système.

Bien que le chiffrement de disque ne résout pas ces problèmes, il met des couches supplémentaires de maux de tête pour un acteur de menace.Une personne mal intentionnée pourrait abandonner si elle est cryptée, ou bien elle pourrait vous torturer (file d'attente obligatoire BD de sécurité XKCD ).

Par conséquent, si votre système est crypté, mais que vous laissez les autres utilisateurs l’utiliser, soit ils ont un mot de passe à décrypter, soit vous laissez votre ordinateur portable déchiffré pour qu’ils puissent accéder à SSH ou avoir un accès physique. Dans ces deux cas, c'est mauvais.

Cela dit, si votre système n’est pas chiffré, cette section n’est pas pertinente pour vous.

    
réponse donnée Thomas Ward 27.12.2016 - 13:40
la source
19

Cela ne concerne peut-être pas la commande rm , car il existe des moyens simples pour supprimer des fichiers sans l’utiliser . Si le problème est que vos amis utilisent involontairement la commande rm , les solutions qui limitent l'utilisation de cette commande ou la font fonctionner différemment peuvent être utiles. En revanche, si le problème est que vos amis traitent délibérément vos données d'une manière que vous ne souhaitez pas, vous devez alors mettre en œuvre des des mesures de sécurité , et aucune solution centrée sur la commande rm elle-même (ou tout autre ensemble de commandes discrètes) ne vous protégera.

Avez-vous besoin de contrôler l'accès, ou d'empêcher simplement des erreurs honnêtes?

En supposant que vos amis savent que vous ne voulez pas qu’ils suppriment vos fichiers, il y a deux possibilités:

  1. Ils pourraient le faire exprès. Dans ce scénario, vos amis suppriment délibérément vos fichiers et vous ne pouvez même pas leur faire confiance pour essayer de vous conformer. avec vos souhaits sur la façon dont ils traitent vos données lorsqu'ils utilisent votre ordinateur. La seule solution à ce problème est d’utiliser une mesure de sécurité effective , comme Thomas Ward l’a expliqué en détail . Souvent, la meilleure mesure consiste à les empêcher d'utiliser votre ordinateur. Mais les faire utiliser leurs propres comptes utilisateurs peut fournir une certaine protection.

  2. Ils peuvent le faire par erreur. Dans ce scénario, vos amis sont extrêmement enclins aux accidents, et ils continuent à exécuter les commandes de rm qu'ils souhaitent ne pas avoir. Ils veulent vous traiter, vous et vos données, avec respect, mais en pratique, ils sont vraiment mal car ils continuent à exécuter la mauvaise commande, à supprimer le mauvais fichier ... ou quelque chose du genre. Bien qu'il soit bon de croire que c'est ce qui se passe, je vous déconseille de supposer que les personnes qui continuent à supprimer vos données après leur avoir dit d'arrêter opèrent sans mauvaise volonté.

    En outre, même si leurs intentions sont bonnes, leur fournir des comptes d'utilisateurs distincts reste le moyen le plus sûr de les empêcher de supprimer vos fichiers, en plus de ne pas leur permettre d'utiliser votre ordinateur.

Si la situation est vraiment n ° 2 - vos amis n'essaient pas de supprimer vos fichiers mais ont simplement besoin d’aide, non pas accidentellement pour les supprimer, et de la seule façon possible les supprimer accidentellement est dû à une mauvaise utilisation par inadvertance d’un petit nombre de commandes (comme rm ) qu’ils ont des problèmes particuliers d’utilisation - puis Les techniques utilisées dans Videonauth peuvent être utiles. Mais vous devez comprendre que ce ne sont pas des mesures de sécurité, car la commande rm n'est que l'un des nombreux moyens simples de supprimer des fichiers . Voir ci-dessous pour plus de détails.

Je vous recommande de vous poser la question suivante: "Ma situation est-elle fondamentalement la même que si, plutôt que les autres personnes qui utilisent mon ordinateur, celle qui utilise rm est incorrecte?"

Si la réponse est no , il s’agit d’une question de sécurité des informations et vous devez empêcher vos amis d’utiliser votre compte utilisateur. Si la réponse est yes , vous pouvez utiliser les mêmes approches que si vous était celui qui utilisait de manière abusive rm :

  • Éducation. Vos amis doivent savoir ce qu’ils font et comment l’éviter.
  • Les changements d’interface. Sans supprimer la possibilité de supprimer des fichiers (ce qui nécessite des comptes d’utilisateur distincts), vous pouvez rendre plus difficile la suppression accidentelle de fichiers. co_de% par lui-même, sans aucune autre action, ne supprimera pas immédiatement rm file . La réponse de Videonauth vous donne une approche. Dans cette réponse, j'en présente une autre.

Mais même si vos amis n’essaient pas de faire quelque chose de mal, vous devriez envisager d’utiliser leurs propres comptes d’utilisateur . Cela résoudra toujours le problème - les mêmes mesures de sécurité qui protègent les données contre la destruction délibérée le protégeront également de la destruction involontaire. Même sans intention malveillante, si quelqu'un continue à faire quelque chose que vous ne voulez pas qu'ils fassent, vous ne pouvez pas leur faire confiance.

La création de l'invite file avant la suppression peut aider à éviter certaines erreurs.

Pour aider les utilisateurs à éviter accidentellement la suppression de fichiers avec rm , vous pouvez définir rm a alias de shell qui exécute réellement rm . Passer l'indicateur rm -i à -i provoque l'invitation de l'utilisateur avant la suppression de chaque fichier (voir rm ).

Vous pouvez le faire (pour votre compte utilisateur) en ajoutant man rm à votre fichier alias rm='rm -i' ou .bash_aliases . Voir cette question et celui-là pour plus de détails. Cela prendra effet pour vos coquilles de bash récemment ouvertes.

Cela fournit aucune sécurité réelle , et n’est pas infaillible pour prévenir les erreurs non plus, car:

  • Ils peuvent choisir de procéder à la suppression lorsque cela leur est demandé.
  • Ils peuvent contourner l’alias de plusieurs manières, y compris en exécutant .bashrc ou en le désarchivant ( /bin/rm ).
  • Il existe de nombreuses situations où l'expansion des alias ne se produit pas , et dans ces situations unalias rm ne sera pas exécuté avec rm .
  • Ils peuvent toujours supprimer des fichiers en utilisant l’une des techniques permettant de ne pas utiliser -i (comme dans L'approche de Videonauth - voir ci-dessous).
  • Ils peuvent toujours endommager les données sans supprimer aucun fichier, par exemple en les écrasant ou en modifiant leur contenu (comme c'est également le cas avec l’approche de Videonauth).

Mais si vous n'avez pas besoin de sécurité réelle (voir ci-dessus), cela pourrait être la solution. Par rapport à l'approche consistant à empêcher vos amis d'utiliser la commande rm fournie par le système:

  • Aliaser rm à rm est moins efficace pour empêcher les erreurs - jusqu'à ce qu'ils utilisent une autre technique pour supprimer des fichiers. À ce stade, les empêcher d'utiliser rm -i sera totalement inefficace, même s'ils n'essayent pas de faire quelque chose de mal, car ils utiliseront probablement rm (ou l'une des innombrables autres commandes qui suppriment un fichier) avec la même discrétion.

  • D'un autre côté, l'expansion des alias ne se produisant que dans certaines situations - en gros, une utilisation interactive du shell - vos amis peuvent penser qu'ils vont être invités lorsqu'ils ne sont pas vraiment invités (parce que la commande est dans un script, par exemple, ou émise par un autre shell). Le moyen de Videonauth n’a pas ce problème, ce qui constitue un avantage objectif de cette méthode par rapport à unlink .

  • Lorsqu'un script s'exécute, sauf s'il est écrit délibérément pour utiliser des alias, vos alias ne sont pas développés. Cela signifie qu'il est très improbable que l'aliasing alias rm='rm -i' à rm ne casse rien. Ceci est un avantage objectif de rm -i .

alias rm='rm -i' ne peut rien faire de tout programme parfaitement ordinaire ne pourrait pas faire.

Il n'y a vraiment rien de spécial à propos de rm . C'est un moyen pratique et auto-documenté de supprimer des fichiers, de sorte que limiter l'accès à celui-ci risque de briser de nombreux scripts qui en dépendent. Mais c'est loin d'être le seul moyen de supprimer des fichiers - ce n'est qu'un programme ordinaire.

Quelques commandes exécutent une tâche qu'un utilisateur limité (non root ) ne peut exécuter sans les exécuter. Par exemple, rm vous permet d'exécuter des programmes en tant qu'autre utilisateur, après avoir vérifié que vous êtes autorisé à le faire. sudo modifie la base de données contenant les mots de passe des utilisateurs, mais permet uniquement vous changez votre propre mot de passe (sauf si vous êtes root, auquel cas vous pouvez changer le mot de passe de n'importe qui).

passwd et /usr/bin/sudo peuvent le faire car ils ont le bit setuid défini, comme le montre le /usr/bin/passwd qui apparaît dans la colonne la plus à gauche lorsque vous exécutez s :

[email protected]:~$ type -a sudo passwd rm
sudo is /usr/bin/sudo
passwd is /usr/bin/passwd
rm is /bin/rm
[email protected]:~$ ls -l /usr/bin/sudo /usr/bin/passwd /bin/rm
-rwxr-xr-x 1 root root  60272 Feb 18  2016 /bin/rm
-rwsr-xr-x 1 root root  54256 Mar 29  2016 /usr/bin/passwd
-rwsr-xr-x 1 root root 136808 Aug 17 09:20 /usr/bin/sudo

Notez que ls -l n'a pas /bin/rm : ses autorisations sont s , tandis que -rwxr-xr-x et /usr/bin/passwd ont /usr/bin/so à la place. Cela fait en sorte que, peu importe qui exécute -rwsr-xr-x ou passwd , il s'exécute réellement en tant qu'utilisateur root, puisque root est le propriétaire de l'exécutable. (Il existe également un bit setgid, qui, une fois défini, provoque l'exécution des exécutables avec l'identité de groupe du propriétaire du groupe plutôt que celle de l'appelant.)

Sauf pour les vulnérabilités de sécurité qui n’ont pas encore été découvertes (ou qui ont été découvertes mais n’ont pas encore été corrigées), sudo et sudo sont sûrs car ces utilitaires sont rédigés avec beaucoup de soin pour faire des choses que l'appelant devrait être autorisé à faire.

passwd ne fonctionne pas de cette façon. Ce n'est pas un setuid car il n'a pas besoin de l'être. Autorisations de répertoire (et occasionnellement des autorisations de fichier ) contrôlent les fichiers qu'un utilisateur peut supprimer et il n'est pas nécessaire qu'ils deviennent root pour le faire.Pour être parfaitement clair, veuillez ne jamais définir le bit setuid sur /bin/rm . Les implications en matière de sécurité seraient désastreuses, car depuis peu, peu importe qui exécute rm , c'est comme si root l'exécutait! (Les utilitaires comme rm et sudo vérifient qui les exécute réellement et vérifient que quelque chose est autorisé avant de le faire; passwd ne fait rien de tel.)

Vérifier si le bit setuid (ou setgid) est défini sur un exécutable vous indiquera si la restriction de ceux qui peuvent l’exécuter a une chance d’améliorer la sécurité. Les exécutables qui ne sont pas setuid (ou setgid) n'ont pas de statut particulier et tout le monde peut simplement les copier et exécuter la copie, apporter leur propre copie depuis un autre ordinateur, écrire un script ou un programme qui fait la même chose ou utiliser un autre programme pour le faire.

Suppression de fichiers sans rm

Le moyen évident de supprimer un fichier sans rm dans Ubuntu est de naviguer jusqu’à son emplacement dans le navigateur de fichiers graphique (Nautilus, si vous utilisez Unity ou GNOME Shell) et de supprimer le fichier. De nombreuses commandes peuvent également être utilisées pour supprimer un fichier d’un terminal, sans jamais utiliser rm .

Par exemple, pour supprimer un fichier appelé rm dans le répertoire en cours, les commandes suivantes, qui fonctionnent directement sur Ubuntu et ne nécessitent pas d’accès à foo.txt , y parviendront. (Pour être sûr, je les ai testés sur un système 16.04 minimal installé uniquement avec les utilitaires système standard, après la suppression rm .)

  • /bin/rm
  • unlink foo.txt
  • busybox rm foo.txt
  • perl -e 'unlink("foo.txt")' ( python3 -c 'import os; os.remove("foo.txt")' au lieu de python dans les anciennes versions)

Bien entendu, cette liste est loin d’être complète. Aucune liste complète de telles commandes n'est possible. Empêcher la suppression de fichiers est l'une des choses que les comptes utilisateurs distincts et les autorisations de fichiers et de répertoires permettent d'obtenir. Ils travaillent très bien pour l'empêcher. En revanche, la modification de la commande python3 (pour lui demander un mot de passe, ou de toute autre manière) ou la restriction de l'accès à rm ne l'empêche pas du tout.

    
réponse donnée Eliah Kagan 27.12.2016 - 20:51
la source
16

Vous pouvez modifier les autorisations sur la commande /bin/rm via la ligne suivante, ce qui empêchera son exécution sans accès sudo:

sudo chmod 750 /bin/rm

Cela les empêche spécifiquement d'utiliser la commande rm fournie par le système. Vous devez savoir que cela ne les empêche pas de supprimer des fichiers d’autres manières.

Pour les empêcher également d'utiliser la commande rmdir , qui est un moyen courant de supprimer des répertoires, vous pouvez définir des autorisations de la même manière sur son chemin exécutable:

sudo chmod 750 /bin/rmdir

Rappelez-vous également que vous ne pouvez utiliser ces commandes qu'avec les droits sudo.

Pour le rétablir si vous ne l'aimez pas ou si d'autres problèmes surviennent, utilisez 755 pour chmod

Comme l'a fait remarquer @muru, ce qui précède est une solution très grossière et pourrait même casser les services système qui ne s'exécutent pas sur le compte root . Par conséquent, j'ajoute ici une autre option utilisant les listes de contrôle d'accès (ACL) pour faire la même chose et probablement beaucoup plus sûre ( bon à lire aussi et vous pouvez ignorer le composant d'activation car ACL est généralement installé sur les systèmes Ubuntu de nos jours):

Donc, faire la même chose que ci-dessus pour les utilisateurs que vous voulez bloquer serait

sudo setfacl -m u:<user-name>:- /bin/rm /bin/rmdir

Remplacez simplement <user-name> par les noms d’utilisateur que vous souhaitez empêcher d’utiliser les fichiers.

Comme avec chmod , l'utilisation de setfacl -m pour empêcher des utilisateurs spécifiques d'exécuter rm et rmdir s'applique uniquement aux commandes fournies par le système. Cela ne les empêche pas de supprimer vos fichiers et dossiers dans Nautilus ou en utilisant d'autres commandes de terminal.

Explication:

  • le drapeau -m signifie modifier les fichiers ACL.
  • la première partie de la modification, le u représente l'utilisateur. Il peut avoir les valeurs suivantes: u pour l'utilisateur, g pour le groupe et o pour tous les autres
  • la partie centrale <user-name> peut contenir le nom d'utilisateur ou le nom de groupe en fonction de ce que vous souhaitez modifier. Pour définir les modifications globales, laissez-le vide.
  • la troisième partie contient le type d'autorisations que vous souhaitez définir. Ici, dans l'exemple que nous voulons définir sans aucune autorisation, nous avons mis - , il peut également contenir les lettres suivantes: r pour les autorisations de lecture, w pour les autorisations d'écriture et x pour l'exécution.
réponse donnée Videonauth 27.12.2016 - 13:40
la source
8

Ceci est une réponse très simple et empêchera quelqu'un d'utiliser la commande rm sans donner de mot de passe. Ce n'est pas une solution sécurisée et vous devriez implémenter certaines des suggestions alternatives dans les autres réponses.

Cependant, vous pouvez utiliser un alias pour modifier le comportement de la commande rm. Essayez:

alias rm="sudo -l >/dev/null && rm"

Cela se produit lorsque quelqu'un entre la commande rm, il exécute la commande sudo -l. Cette commande oblige l'utilisateur à entrer son mot de passe. S'ils réussissent, il répertorie leurs privilèges (nous ignorons cette sortie) et quitte avec le statut 0, s'ils se trompent, cela existe avec une erreur.

Nous suivons ensuite la commande sudo avec un "& amp; & amp;", qui quitte la commande suivante - dans ce cas "rm" uniquement si la commande précédente se termine avec le statut 0 - c'est-à-dire que le mot de passe est correct. / p>

Pour rendre ce permanent permanent, incluez la commande alias dans ~/.bashrc .

Notez que ceci est très facilement annulé (par exemple, ils peuvent simplement taper /bin/rm .

    
réponse donnée Nick Sillito 27.12.2016 - 19:05
la source
5

Parfois, ce ne sont pas nos amis, nous sommes nos propres pires ennemis

J'ai écrit un script pour protéger le mot de passe rm comme l'OP demandé mais aussi pour apporter des modifications afin de vous empêcher de supprimer accidentellement:

  • /
  • / home
  • / bin

Edit: 5 mars 2017 - Modifiez la méthode de vérification si vous utilisez le terminal.

Créer le script

Utilisez gksu gedit /usr/local/bin/rm et copiez dans ces lignes:

#!/bin/bash

tty -s;
if [ "0" == "$?" ]; then Terminal="Y"; else Terminal="N"; fi

if [ $Terminal == "Y" ] ; then
    # Running from terminal don't allow delete of / or /toplevel directory even if sudo
    for i in ${@:1}
    do
        # Skip options -i -r -v -d 
        if [[ ${i:0:1} != "-" ]] ; then
            # if parameter doesn't begin with '-' it's file or directory, so get real path.
            fullname=$(realpath "$i" 2>&1) # No error messages if file doens't exist
            # We must have at least two '/' in the full path
            levels=$(echo "$fullname" | tr -cd '/' | wc -c)
            if (( $levels == 1 )); then # Test for 1, will be zero when file doesn't exist.
                echo "Attempting to remove top level directory '$fullname'"
                echo "Use 'sudo /bin/rm [email protected]' instead."
                exit 1 # error
            fi
        fi
    done
fi


if [[ $(id -u) != 0 ]]; then # Only non-root processes enter password (ie "sudo rm ..." is ok)
  if [ $Terminal == "Y" ] ; then
  # Only running from a terminal needs password (ie not cron)

    # log rm usage to /var/log/syslog
    PARENT_COMMAND="$(ps -o comm= $PPID)"   
    logger "$PARENT_COMMAND"" - rm command was used on file: ""$fullname"

    # Get password
    Password=$(zenity --password --title="Password for rm")
    encryptPassword=$(echo -n "$Password" | md5sum)

echo "md5sum: $encryptPassword" # Comment out after viewing one time and updating line below.

    if [[ "$encryptPassword" != "d2c30dc65e59558c852ea30b7338abbe  -" ]]; then
        echo "Invalid password!"
        exit 1
    fi
  fi # non-terminals can't enter password.
fi # root doesn't need to enter password.

# Call REAL rm command with parameters passed to this wrapper sript
/bin/rm "[email protected]"

exit 0

Remplacez le mot de passe "WE2U" par tout ce que vous voulez et enregistrez le fichier.

Marquer le nouveau script rm comme exécutable

Marquer le nouveau script rm comme exécutable en utilisant:

sudo chmod +x /usr/local/bin/rm

Comment ça marche

Sauf si le mot de passe est WE2U , la première fois que vous exécuterez le script, vous obtiendrez un "mot de passe invalide" et la clé de cryptage du mot de passe saisi. Copiez et collez cette clé de chiffrement du terminal dans le script. Ensuite, commentez la ligne avec l’écho qui affiche la clé de chiffrement sur le terminal.

Comme le chemin /usr/local/bin est plus élevé sur la liste que /bin notre commande rm est appelée. Après avoir obtenu un mot de passe valide, il appelle /bin/rm pour effectuer la suppression réelle.

Comme l’a souligné Thomas Ward dans une autre réponse, si vous deviez faire sudo apt-get install ... , on vous demanderait mille fois le mot de passe. Le script vérifie si sudo est utilisé et ne demande pas de mot de passe. De plus, si rm est appelé depuis l'interface graphique, aucun mot de passe n'est requis.

Le script appelle logger à enregistrer chaque fois que rm a été appelé manuellement à l'aide du terminal. L'utilisation des commandes est enregistrée dans /var/log/syslog .

    
réponse donnée WinEunuuchs2Unix 30.12.2016 - 03:32
la source
3

Une autre alternative serait de créer des copies de sauvegarde de tous les fichiers importants dans un répertoire auquel les utilisateurs non-root n'ont pas accès. Vous pouvez utiliser rsync ou unison pour les synchroniser automatiquement. Assurez-vous qu'au moins un répertoire du chemin d'accès à la destination de sauvegarde appartient à root et au mode 700. Cela se traduirait par deux copies de tous les fichiers. Il serait plus sûr de simplement créer un utilisateur invité à utiliser, sauf que vous devez vous rappeler de toujours verrouiller ou vous déconnecter avant de lui donner l’ordinateur ou de le laisser sans surveillance.

    
réponse donnée Random832 27.12.2016 - 15:38
la source
2

Pas la réponse directe à la question que vous recherchez mais:

Si vos amis suppriment vos fichiers à l’aide de la commande rm , vos amis sont soit incompétents, saccadés, soit ils BOFH wannabes qui essaient de vous apprendre à ne pas laisser vos sessions connectées et sans surveillance. Dans tous les cas, la solution est la même: ne laissez pas votre session connectée et sans surveillance .

Cela présente l'avantage de ne pas avoir à apporter de modifications spéciales au système chaque fois que vous mettez à niveau ou installez un nouveau système, et empêche également les scripts et autres éléments qui utilisent des commandes de se comporter de manière imprévisible.

Il a également l’avantage d’empêcher les "amis" de passer à l’étape suivante. Voulez-vous également "protéger par mot de passe" la commande mv s'ils décident de déplacer vos fichiers vers / dev / null lorsqu'ils découvrent qu'une simple suppression ne fait pas ce qu'ils veulent? Lorsque vous êtes dans un jeu comme celui-ci, le seul coup gagnant est de ne pas jouer.

    
réponse donnée Rob Moir 29.12.2016 - 16:32
la source
1

J'ai une possibilité similaire pour laquelle j'ai prévu. Sur le serveur de fichiers, si le stockage principal des photos est accessible en écriture, certains membres de la famille (moins techniques ou accidentels) pourraient effacer quelque chose, glisser accidentellement dans l'interface graphique déplaçant le répertoire ou remplacer l'original par .

J'ai réalisé que je pouvais me protéger contre cela sans rendre les autorisations non écrites pour tout le monde. ZFS effectue des snapshots périodiques de sorte que toute suppression ou écrasement accidentel peut être inversé. (Contrairement à une sauvegarde, un instantané est léger et permet la copie sur écriture, ce qui ne multiplie pas votre utilisation du stockage.)

ZFS est natif à FreeBSD. Linux a btrfs qui a aussi des instantanés.

    
réponse donnée JDługosz 28.12.2016 - 08:08
la source
0

Une solution de contournement très stupide pour un problème très stupide.

Si vous ne voulez pas chmod rm , rmdir ou mv (pour mv filename /dev/null ) ou utiliser des ACL, vous pouvez créer un utilisateur factice avec un mot de passe, mais vous connaissez et alias chaque commande à sudo [user] , puis créez des alias pour chaque commande que vos amis ne connaissent pas. De cette façon, lorsque vos amis saisissent rm , le système leur demandera un mot de passe (mais deviner le mot de passe incorrect enregistrera la tentative échouée) et vous pourrez toujours taper rmalias ou ce que vous aurez choisi pour supprimer les fichiers. / p>

Vous pouvez également créer un compte invité n’ayant pas accès à votre répertoire personnel.

    
réponse donnée Andy 29.12.2016 - 17:26
la source
0

Si vous souhaitez protéger rm par mot de passe, une solution consisterait à créer un wrapper pour rm qui nécessiterait des privilèges root et à demander un mot de passe autrement. (REMARQUE: ce wrapper peut disparaître lorsque le package coreutils est mis à jour ou réinstallé.) Notez également que cela ne sécurise que rm, il existe encore de nombreuses autres manières de supprimer un fichier.

Ouvrez un terminal et devenez root. Ensuite, exécutez sudo mv /bin/rm /bin/rmold pour déplacer l'ancien rm vers un autre endroit.

Exécutez maintenant sudo nano /bin/rm pour créer un wrapper.

Dans Nano, tapez ce qui suit:

#!/bin/bash
/bin/rmold "[email protected]"
exit "$?"

Ensuite, maintenez CTRL et appuyez sur X pour quitter. Appuyez sur Y lorsque vous y êtes invité, puis appuyez sur ENTER pour enregistrer le fichier.

Enfin, nous devons accorder les autorisations appropriées:

sudo chmod a+x /bin/rm

Et voilà.

    
réponse donnée InitializeSahib 27.12.2016 - 22:34
la source

Lire d'autres questions sur les étiquettes