Comment puis-je définir le fichier pour qu'il soit exécutable uniquement pour d'autres utilisateurs mais pas lisible / inscriptible, la raison pour laquelle j'exécute quelque chose avec mon nom d'utilisateur mais je ne veux pas donner le mot de passe. J'ai essayé :
chmod 777 testfile
chmod a=x
chmod ugo+x
J'obtiens toujours une autorisation refusée lors de l'exécution en tant qu'autre utilisateur.
linux
security
permissions
executable
c0mrade
la source
la source
Réponses:
Vous avez besoin à la fois des autorisations de lecture et d'exécution sur un script pour pouvoir l'exécuter. Si vous ne pouvez pas lire le contenu du script, vous ne pouvez pas non plus l'exécuter.
la source
Il y a une demi-vérité dans les déclarations précédentes. Vous pouvez configurer un script afin qu'il ne soit pas lisible par l'utilisateur, mais qu'il soit toujours exécutable. Le processus est un peu long, mais il est possible en faisant une exception dans / etc / sudoer afin que l'utilisateur puisse exécuter le script en tant que vous-même temporairement sans être invité à entrer un mot de passe. Exemple ci-dessous:
Un script que je veux partager avec un utilisateur:
Créez un script shell qui appelle 'somescript.pl' et enregistrez-le dans / bin /:
ÉTAPE FACULTATIVE Créez un lien symbolique vers somescript.sh dans / bin /:
Assurez-vous que le script shell est lisible / exécutable pour l'utilisateur (pas d'accès en écriture):
Faites une exception dans / etc / sudoer en ajoutant ces lignes:
PREUVE DANS LE PUDDING:
Cette méthode devrait être meilleure que d'essayer de brouiller avec
Filter::Crypto
ouPAR::Filter::Crypto
ouAcme::Bleach
qui peut être inversée par un utilisateur déterminé. Il en va de même pour la compilation de votre script en binaire. Faites-moi savoir si vous trouvez quelque chose de mal avec cette méthode. Pour les utilisateurs plus avancés, vous souhaiterez peut-être supprimer complètement la section User_Alias et remplacer SCRIPTUSER par '% groupname'. De cette façon, vous pouvez gérer vos utilisateurs de script avec lausermod
commande.la source
Si vous laissez d'autres utilisateurs exécuter un programme, ils peuvent alors savoir tout ce que fait le programme, que le fichier du programme soit lisible ou non. Tout ce qu'ils doivent faire, c'est pointer un débogueur (ou un programme de type débogueur tel que
strace
). Un exécutable binaire peut s'exécuter s'il est exécutable et non lisible (un script ne le peut pas, car l'interpréteur doit pouvoir lire le script), mais cela ne vous donne aucune sécurité.Si vous voulez que d'autres puissent exécuter votre programme sous forme de boîte noire, sans leur permettre de voir exactement ce que fait le programme, vous devez donner à votre script des privilèges élevés: rendez-le setuid pour votre utilisateur. Seul root peut utiliser des outils de débogage sur les programmes setuid. Notez que l'écriture de programmes setuid sécurisés n'est pas facile, et la plupart des langues ne conviennent pas; voir Autoriser setuid sur les scripts shell pour plus d'explications. Si vous allez écrire un programme setuid, je recommande fortement Perl, qui a un mode (mode taint) qui est explicitement destiné à rendre possible des scripts setuid sécurisés.
la source
Vous pouvez définir des autorisations de fichier avec la commande chmod. L'utilisateur root et le propriétaire du fichier peuvent définir des autorisations de fichier. chmod a deux modes, symbolique et numérique.
Tout d'abord, vous décidez si vous définissez des autorisations pour l'utilisateur (u), le groupe (g), les autres (o) ou les trois (a). Ensuite, vous ajoutez une autorisation (+), la supprimez (-) ou effacez les autorisations précédentes et en ajoutez une nouvelle (=). Ensuite, vous décidez si vous définissez l'autorisation de lecture (r), l'autorisation d'écriture (w) ou exécutez l'autorisation (x). Enfin, vous indiquerez à chmod les autorisations de fichier que vous souhaitez modifier.
Voici quelques exemples.
Effacez toutes les autorisations mais ajoutez une autorisation de lecture pour tout le monde:
Après la commande, les autorisations du fichier seraient -r - r - r--
Ajoutez des autorisations d'exécution pour le groupe:
Maintenant, les autorisations du fichier seraient -r - r-xr--
Ajoutez des autorisations d'écriture et d'exécution pour le propriétaire du fichier. Notez comment vous pouvez définir plusieurs autorisations en même temps:
Après cela, les autorisations de fichier seront -rwxr-xr--
Supprimez l'autorisation d'exécution du propriétaire et du groupe du fichier. Notez, encore une fois, comment vous pouvez les définir à la fois:
Maintenant, les autorisations sont -rw-r - r--
Il s'agit d'une référence rapide pour définir les autorisations de fichiers en mode symbolique:
la source
chmod
. Cela ne répond pas à la question.