web-dev-qa-db-fra.com

Comment puis-je trouver des fichiers et des dossiers enregistrables dans le monde entier et définir le bit collant?

Je veux faire ce qui suit:

  1. Besoin de trouver tous les fichiers et dossiers accessibles en écriture dans le monde à partir de / root.
  2. Si trouvé, je dois vérifier si le bit collant est activé ou non.
  3. Si le bit collant n'est pas défini, définissez-le.

Pouvons-nous trouver une solution en ligne de commande pour ce type de problème?

10
snoop

Vous pouvez le faire en utilisant le format -perm -mode de find. De man find:

-perm -mode

Tous les bits de permission sont définis pour le fichier. Les modes symboliques sont acceptés sous cette forme, et c'est généralement la manière dont vous souhaitez les utiliser. Vous devez spécifier u',g 'ou' o 'si vous utilisez un mode symbolique. Voir la section EXEMPLES pour quelques exemples illustratifs.

Donc, pour trouver tous les fichiers accessibles en écriture dans le monde entier, quelles que soient les autres autorisations dont ils disposent, vous pouvez le faire:

find / -perm -o+w 

Pour définir le sticky bit, utilisez -exec:

find . -perm -o+w -exec chmod +t {} + 
12
terdon

Cette commande devrait trouver des répertoires en écriture dans une seule commande, je me retrouve souvent à l'utiliser. C'est la commande optimale! ;) j'espère que ça vous sert bien:

find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;
2
Boschko