2011-11-12 3 views
0

Je dois modifier les autorisations de fichier sur un fichier exécutable, en utilisant os.chmod.
J'ai cet exécutable et je veux changer ses permissions afin qu'il ne puisse écrire nulle part, seulement en lisant et en l'exécutant.
Comment puis-je faire cela?chmod - autorisation de fichier sur l'exécutable

Merci,
rubik

+1

'chmod' ne fait pas cela. Ce dont vous avez besoin est d'exécuter le processus dans un bac à sable. –

+0

[Une question similaire publiée sur Unix et Linux] (http://unix.stackexchange.com/questions/24469/chmod-change-permissions-on-a-file). – Gilles

Répondre

2

Les autorisations que vous pouvez définir sur un fichier avec chmod affectent qui peut lire/écrire dans/exécuter ce fichier, pas les privilèges que le processus créé en exécutant ce fichier a. Sous Unix, vous pouvez obtenir une certaine forme de protection en jouant avec le propriétaire du fichier et le bit sticky, et avoir les permissions appropriées sur votre système de fichiers, mais ce n'est pas facile à obtenir et ne fonctionne pas sous Windows (pas de bit collant). Là).

+0

Merci, mais je ne peux pas voir ce que sticky bit peut faire pour moi. J'ai lu l'article de Wikipedia à ce sujet. – rubik

+0

Si vous définissez le propriétaire d'un exécutable sur, par exemple, 'nobody' et y mettez un bit sticky, lorsque vous lancerez cet exécutable, le processus commencera _as if_ il a été lancé par l'utilisateur 'nobody' (indépendamment de l'utilisateur l'a réellement démarré). Si 'personne 'n'a pas d'accès en écriture aux fichiers/répertoires qui vous intéressent, ce processus ne pourra pas jouer avec eux. – Mat

+0

Merci! Je vais essayer ça. – rubik

1

J'ai cet exécutable et je souhaite modifier ses autorisations pour qu'il puisse écrire nulle part, la lecture seule et exécution

Ce n'est pas comment chmod fonctionne - il Définit des autorisations sur le fichier lui-même, il ne peut pas limiter à quoi un exécutable peut écrire.

1

Une solution de contournement utilisée par Linux ou Unix pour interdire un exécutable d'écrire quelque chose consiste à rendre ce setuid exécutable à un utilisateur qui n'a pas de permission (qui n'existe pratiquement pas), tel que l'utilisateur nobody (par ex. dans Debian ou Ubuntu). Soyez prudent et en savoir plus sur seteuid & setreuid & capabilities & credentials (et je ne sais pas exactement si tous ces syscalls ont une interface pythonique).