2 votes

Comment supprimer un fichier du système de fichiers sous Linux lorsque je n'en ai pas la permission ?

J'ai réinstallé ns2, mais je n'ai pas supprimé un fichier du système de fichiers avec le chemin :

/usr/bin/ns

Donc quand je tape sur mon terminal :

which ns

J'ai compris :

/usr/bin/ns 

Au lieu du chemin que j'ai défini qui est :

/home/me/ns-allinone-2.35/bin/ns

Ceci se trouve dans mon répertoire personnel me . Comment dois-je supprimer le fichier dans le système de fichiers avec un nom similaire ? Les propriétés de ce fichier indiquent dans les permissions que je ne possède pas ce fichier, je ne peux donc pas modifier les permissions.

Je ne peux pas exécuter mes scripts tcl si le chemin n'est pas défini correctement et pour le définir, je dois supprimer le duplicata. ns . Comment obtenir la permission de le supprimer ? Et comment le supprimer en utilisant mon terminal ?

8voto

Giuseppe R Points 1325

Ce n'est pas requis que vous supprimez le fichier /usr/bin/ns afin de faire which y exec exécuter automatiquement /home/me/ns-allinone-2.35/bin/ns .

Tout ce que vous avez à faire est de mettre /home/me/ns-allinone-2.35/bin sur votre $PATH avant /usr/bin .

Voici le mauvais manière de le faire :

export PATH="${PATH}:/home/me/ns-allinone-2.35/bin"

Dans ce cas, /usr/bin (par défaut sur $PATH ) sera plus tôt dans le $PATH d'expansion que celle que vous voulez, donc vous exécuterez /usr/bin/ns lorsque vous exécutez ns o which ns .

Voici le droite manière de le faire :

export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"

Maintenant, il suffit de taper ns o which ns pointera vers celui que vous voulez, sans avoir à supprimer quoi que ce soit.

Mise à jour : Si vous voulez, pour éviter de modifier votre $PATH en ~/.bashrc ou similaire, vous pouvez créer une enveloppe bash script autour de votre script tcl qui modifie le chemin en premier. Quelque chose comme ceci :

#!/bin/bash
export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"
tcl ...

Si vous voulez supprimer /usr/bin/ns de toute façon et vous n'avez pas accès à la root ou la possibilité de sudo (ou de vous mettre dans le /etc/sudoers ), et /usr/bin/ns est détenu par root et n'est pas inscriptible dans le monde entier, alors vous n'avez pratiquement aucune option pour supprimer ce fichier, sauf si :

  • Vous êtes en mesure de démarrer l'ordinateur dans un autre système d'exploitation (CD live, USB live, etc.), d'obtenir l'accès root à l'ordinateur. que OS, et supprimez le fichier ;
  • Vous exécutez une sorte d'exploit ( Je ne le recommande pas si vous ne possédez pas la machine ! )

Fondamentalement, "comment supprimer un fichier que je n'ai pas le droit de supprimer" est une question tendancieuse : la question suppose que le propriétaire de la machine veut de supprimer ce fichier, et veut pour vous donner la permission. Si le propriétaire de la machine n'est pas vous vous ne devriez même pas poser cette question, et nous ne vous aiderons pas à pénétrer dans la machine d'un autre. Ce serait comme dire "comment conduire cette voiture dans la rue alors que je n'ai pas les clés". -- Oui, bonne chance pour ça.

1voto

Another.Chemist Points 298

Un coup d'œil rapide à mon propre /usr/bin/ montre que le répertoire appartient à root. En supposant que vous pouvez utiliser sudo o su soit rm comme root ou utiliser chown pour le remplacer par votre nom d'utilisateur ou votre groupe.

Vous pouvez devenir l'utilisateur root en émettant simplement la commande su commande. Dans la plupart des terminaux, vous verrez votre invite passer de $ à un # indiquant que vous êtes actuellement connecté au terminal en tant que root. Assurez-vous que lorsque vous avez terminé en tant que root, vous avez exit afin de ne pas lancer par inadvertance d'autres commandes avec un accès aussi élevé au système de fichiers, ce qui pourrait endommager votre système de fichiers. A partir de là, vous pouvez utiliser rm en /usr/bin/ns .

El plus sûr est d'utiliser le sudo pour permettre l'exécution d'une commande en tant que super-utilisateur pour cette instance seulement, en émettant la commande rm comme suit :

sudo rm /usr/bin/ns

1voto

Mohsin Points 11

@allquixotic a tout à fait raison. Vous ne peut pas supprimer un fichier si vous n'avez pas les autorisations pour le faire et que la seule façon de le faire serait de obtenir les permissions par un exploit ou en utilisant quelque chose comme sudo si vous en avez le droit. C'est tout l'intérêt des permissions du système de fichiers.

Maintenant, une autre approche que vous pouvez utiliser pour contourner cela est de mettre en place un alias. Ouvrez le fichier d'initialisation de votre Shell ( ~/.bashrc si vous utilisez bash ) et ajoutez cette ligne :

alias ns='/home/me/ns-allinone-2.35/bin/ns'

Les alias de Bash sont évalués avant el $PATH est recherchée, ce qui rendra le ns pointe vers votre version installée localement par défaut.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X