web-dev-qa-db-fra.com

Comment puis-je masquer des répertoires ou des fichiers sans changer leur nom?

L'OCD en moi veut que les répertoires dont je n'aime pas le nom soient cachés car je n'interagis pas directement avec eux.

Comment puis-je masquer des répertoires sans utiliser la notation par points?

50
myusuf3

En supposant que vous vous souciez uniquement de cacher les fichiers dans Nautilus, il y a un bug sur le Bugzilla de GNOME à ce sujet. Cependant, actuellement, ce bogue n’a pas été résolu.

Il existe un autre moyen de masquer l’apparition de fichiers dans Nautilus. Si vous créez un fichier appelé .hidden à l'intérieur d'un répertoire, aucun nom de fichier répertorié dans le fichier ne sera affiché.

Par exemple, ci-dessous est un fichier .hidden que j'ai créé. Ce fichier masque tous les fichiers ou dossiers nommés b ou e situés dans le même répertoire que le fichier .hidden.

Example .hidden File

Vous trouverez ci-dessous une capture d'écran du dossier contenant le fichier .hidden. Notez que vous ne voyez que trois fichiers: a, c et f. Vous ne voyez pas le fichier .hidden à cause du "." au début de son nom. Example Folder

La capture d'écran ci-dessous est du même dossier qu'avant. Cependant, cette fois, j'ai frappé Ctrl+H pour que nautilus affiche les fichiers et dossiers cachés. Remarquez comment plusieurs fichiers supplémentaires apparaissent. Vous voyez maintenant plusieurs fichiers qui étaient auparavant cachés en raison de leur nom commençant par un '.'. Il existe aussi maintenant des fichiers appelés "b" et "e", qui, bien qu'ils n'aient pas de noms commençant par un ".", Ont été masqués car ils figuraient dans le fichier .hidden.

Example Folders With Hidden Files Visible

Les fichiers mentionnés dans le fichier .hidden ne seront cachés que dans Nautilus. Des outils tels que ls les afficheront toujours. Le fichier .hidden n'est pas non plus récursif. Cela n'affecte que les fichiers du même répertoire que le fichier .hidden.

Certaines personnes du forum ont créé des scripts pour Nautilus qui facilitent l’ajout de fichiers au fichier .hidden. Le premier script inclut une explication intéressante sur la façon d'installer et d'utiliser les scripts, mais le second script est un peu plus propre et plus court. N'hésitez pas à utiliser l'un ou l'autre script pour vous rendre la vie un peu plus facile.

79
nhandler

Unix et Linux ne prennent en charge que le masquage de dossiers comportant un ..

Si vous voulez vraiment les éliminer, mais que vous ne voulez pas qu'ils aient .s, mettez-les tous dans un .hidden dans le même répertoire que le fichier ou le dossier que vous voulez masquer. .hidden ne sera pas exposé par le gestionnaire de fichiers et vos fichiers ne changeront pas de nom.

13
lfaraone

A partir de la ligne de commande, vous pouvez essayer quelque chose comme ceci dans votre fichier .bash_aliases:

lsh() {
    [ -s .hidden ] && echo "lsh: hiding $(wc -l .hidden) patterns" && ls $@ | grep -v -F "$(cat .hidden)";
    [ ! -f .hidden ] && ls $@
}

Cela ajoute une nouvelle commande lshqui se comporte comme lsname__, mais masque les fichiers répertoriés dans un répertoire .hidden. (Il manque également certaines de ses fonctionnalités telles que la sortie colorisée et les listes de colonnes.)

3
qneill

Si vous souhaitez masquer des fichiers, il ne vous reste plus qu'à les renommer avec un . précédent, comme dans la convention * NIX. Désolé, mais c'est tout.

Toutefois, si vous souhaitez masquer le conten des fichiers/répertoires, vous pouvez le faire avec des autorisations de fichier.

Supposons donc que vous avez un tas de fichiers dans un dossier appelé secret_stash, vous pouvez le changer afin que seul vous (le propriétaire) ayez r-x (lire, exécuter) et que tout le monde n’ait rien --- (pas d’accès). Étant donné que r-x est la durée minimale requise pour afficher un répertoire (lu pour accéder à son contenu et exécuter pour pouvoir le voir), tout ce qui se trouve à l'intérieur de ce dossier est effectivement masqué, sauf rootname__.

NOTE: J'utilise cette démo sous le nom rootet tente d'accéder au dossier sous le nom myusername__

Pour ce faire, vous exécutez chmod 700 dirname (700 signifie rwx------):

% mkdir secret_stash
% chmod 700 secret_stash

Et le voici:

% whoami
root
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash  
./  ../  secret.txt
% cat secret_stash/secret.txt 
TOP SECRET DATA

Maintenant et si j'essaie d'y accéder à partir de myusername__, les tentatives pour accéder au dossier ou à son contenu échouent:

% whoami
myuser
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash 
ls: cannot open directory secret_stash: Permission denied
% cat secret_stash/secret.txt
cat: secret_stash/secret.txt: Permission denied

Et maintenant, j'ai dit le mot "secret" tant de fois qu'il perd tout son sens!

2
jathanism

1er arrêt: si vous voulez cacher un fichier à qui que ce soit: installez un système de détection d'intrusion sous Linux . ( Snort est un exemple) Vous pouvez même cacher un fichier à "root" mais "root" sera également en mesure de rétablir ces paramètres.


Mais il serait peut-être plus simple de définir les autorisations du répertoire qui contient le fichier sur "root". Exemple:

 $ Sudo su
 # mkdir tmp/
 # touch tmp/1
 # chown root:root tmp
 # chmod 000 tmp  
 # ls -l
total 4
d--------- 2 root root 4096 2015-08-07 06:36 tmp  
 # exit
exit
 $ ls
tmp
 $ cd tmp/
bash: cd: tmp/: Permission denied

Et le fichier 1 est effectivement masqué.

Le répertoire sera visible. Le fichier ne sera pas visible. Attention, "root" aura TOUJOURS accès à tous les fichiers.


Avec le chattr, vous pouvez même rendre le fichier immuable.

Sudo su    
chattr + i {file}

et même "root" ne peut pas altérer le fichier - à moins que le chattr soit annulé (et oui "root" peut le faire).

Un raccourci clavier pour ça?

Non, c'est quelque chose que vous devez faire manuellement.

2
Rinzwind

Il existe également une extension pour Nautilus appelée nautilus-hide qui vous permettra de masquer n’importe quel fichier ou dossier avec un simple clic-droit dessus.

Pour installer cette extension: Sudo apt-get install nautilus-hide dans un terminal ou recherchez "cache de nautile" dans le Centre logiciel Ubuntu.

N'oubliez pas de quitter Nautilus après l'installation: Alt+F2 et tapez nautilus -q.

0
SNugues