Comment limiter les commandes de l'utilisateur de Linux
J'ai un utilisateur dans un groupe : "démo".
Je veux définir la politique de que ce les utilisateurs peuvent exécuter des 10 commandements, comme "vim","nano","cd" et etc.
Ou, définir la stratégie pour avoir accès à toutes les commandes, à l'exception de "ssh" et "chat" commandes.
Grâce
man rbash
pourrait être utile.vous êtes root.ok.mettez toutes les commandes dans /bin/bash . puis définissez les autorisations pour chaque utilisateur à des commandes spécifiques, par chowm et chmod...ok?
ce n'est pas la bonne action! Je ne veux pas changer bin répertoire des fichiers ou des autorisations d'entre eux. il fera de problème pour le système. Je suis à la recherche pour le bon moyen de limiter certains utilisateurs accède.
vous pouvez simplement écrire chown utilisateur:groupe /bin/ls || chown user2:groupe2 /bin/mv et ainsi de suite...
Ipo ok...bye
OriginalL'auteur mortezaipo | 2014-02-01
Vous devez vous connecter pour publier un commentaire.
Il ya beaucoup de façons différentes que vous pouvez atteindre cet objectif. Je vais faire la liste de plusieurs solutions possibles.
Je propose à l'aide de plusieurs couches de protection pour empêcher les utilisateurs d'exécuter les commandes qu'ils ne devraient pas être autorisés à y accéder. Toutes les instructions ici supposent que les utilisateurs disposent de leur propre
/home/[username]
répertoire, que sa coquille est/bin/bash
et que vous souhaitez les utiliser le shell bash lorsqu'ils ouvrent une session dans le système.1) Changement de l'utilisateur bash restreint de bash mode, de sorte qu'ils ne peuvent pas modifier les répertoires (si vous n'avez pas une restriction de l'bash mode sur votre système, ce lien d'aide et de vous donner plus d'informations)
chsh -s /bin/rbash [nom d'utilisateur]
2) de Changer les permissions du dossier, de sorte que seul l'utilisateur peut modifier le contenu de son répertoire home
chmod 755 /home/[username]
3) Supprimer l'utilisateur
.bashrc
fichierrm /home/[username]/.bashrc
Ce site a savoir pourquoi il pourrait être une bonne idée de supprimer le.bashrc
dans cette situation.4) Créer un
.bash_profile
et d'ajouter "safe" alias pour toutes les commandes que vous souhaitez désactiver./bash_profile exemple de fichier de
Un veuillez vérifier la liste complète des commandes bash pour plus d'informations. Vous devez vous assurer que le
alias alias="printf ''"
de commande est la dernière commande sur la liste sinon vous perdez votre capacité à alias l'ensemble de ces commandes.5) Désactiver les commandes shell en vi en utilisant un alias pour la commande de vi à la mode restreint
La syntaxe est
alias vi="vi -Z"
, mais s'il vous plaît voir ce site pour plus d'informations.6) Modifier la propriété de l'utilisateur
.bash_profile
à la racinechown root:root /home/[username]/.bash_profile
7) Enfin, supprimer les autorisations d'écriture sur l'utilisateur
.bash_profile
chmod 755 /home/[username/.bash_profile]
Maintenant, quand les utilisateurs se connectent, ils ne seront pas en mesure de changer de répertoire, toutes les commandes que vous n'en voulez pas à utiliser à la sortie de la même information que si l'utilisateur a appuyé sur le
[ENTER]
clé avec aucune commande spécifiée, et votre/bin/bash
fonctions de rester intact.Selon les fonctions que vous choisissez ou non de faire un alias de cette façon, les utilisateurs peuvent être en mesure de contourner certaines des commandes que vous avez mis en place. Cependant, depuis que nous avons mis en place un peu de sécurité tampons, l'utilisateur aurait vraiment savoir sur les systèmes informatiques de faire tout dangereux.
Sur une note connexe et quelque chose que vous pourriez envisager, si vous placez directement ces alias dans chaque et tous les utilisateurs
.bash_profile
vous avez des difficultés à maintenir les fonctions qui devrait et ne devrait pas être un alias, et si vous avez besoin de changer l'alias sur quelque chose que vous auriez à changer de chacun d'entre eux individuellement. Aussi, puisque les utilisateurs peuvent utiliservim
ouvi
pour afficher les fichiers, ils pouvaient voir le contenu de leur.bash_profile
et de comprendre ce que les restrictions qu'ils ont et n'ont pas.Pour contourner cela, je ne le suggèrent.
1) Mettre tous les alias dans un répertoire non accessible par les utilisateurs (coller le contenu de la
.bash_profile
ici)/[path_to_file]/startup_functions_for_beginners.sh
2) le Sourcing des alias dans leur
.bash_profile
améliorée ./bash_profile exemple de fichier de
Cela devrait vous mettre sur votre chemin, mais rappelez-vous qu'il y a presque toujours des moyens de contourner les restrictions.
Aussi, n'hésitez pas à remixer les informations dans cette réponse, pour répondre à vos besoins. Ceux-ci peuvent très certainement être combiné avec un certain nombre d'autres restrictions.
Q: j'ai besoin des utilisateurs d'avoir accès à
fg
etbg
, mais je n'en voulez pas être en mesure d'accéder àaptitude
oubash
Liste des commandes les plus courantes de ce Harvard Site Web (liste NON EXHAUSTIVE)
la prudence doit être pris en charge avec les éditeurs, parce que certains de permettre l'excution de commandes shell dans le programme
Tout Le Reste
Vous n'avez pas à alias de toutes les commandes. Vous avez juste besoin de faire un alias de la liste des commandes que vous ne voulez pas que les utilisateurs à les utiliser ou les commandes qui ont besoin d'un mode sans échec. Je vais ajouter une petite liste d'exemples, et de l'ajouter à ma réponse pour vous afin que vous avez une idée de ce que vous pourriez faire.
C'est un terrible suggestion, pour un tas de raisons. Tout d'abord, il est sur le mauvais site (qui devrait être le sec SE). Deuxièmement, ce n'est pas une liste blanche de l'approche. La troisième, c'est en passant tout les types d'utilisateur dans un complet de Turing-complet et sans restriction interprète qui prie seulement pour les engins bizarres, mais la quatrième (et surtout) parce que c'est tellement facile à contourner.
Juste à côté de ma tête, un utilisateur pourrait simplement le script de l'envoi d'un bouquet de
^Z
ou^C
caractères pour le client le droit après avoir entré le mot de passe de complètement abréger tout les efforts déployés dans le bashrc. Alors, bien sûr, ils pourraient lancer un shell interne est exécuté, ce qui n'aurait pas les alias définis. Ou ils pourraient donner le chemin complet de l'exécutable ils voulaient courir. Et cetera. Je suis venu avec ces trois idées dans les trente secondes, il m'a fallu pour lire votre post; imaginez ce que quelqu'un avec sérieux la sécurité de l'ordinateur de la connaissance qui a pris soin de prendre un intérêt pouvait faire.C'est pire que pas de sécurité du tout, car il donne l'illusion de la sécurité; il rend les OP se sentir à l'aise et sans complaisance de les protéger. C'est comme s'ils lui ai demandé comment se battre, et vous avez dit "fermez vos yeux quand vous voyez quelqu'un est sur le point de vous frapper dans le visage, et parce que vous n'attendez pas elle, c'est comme si vous ne serez pas frappé à tous".
OriginalL'auteur Dodzi Dzakuma
Je sais je suis en retard à la fête, 2 ans de retard, en fait, mais je suis tombé sur une solution de contournement pour votre situation, juste maintenant.
J'avais un utilisateur, appelons-le "test1" qui devait avoir certaines commandes restreintes, comme "su", mais le reste devrait être disponible.
Pour appliquer cette restriction, j'ai simplement utilisé ACL (en supposant que vous avez acl activé sur votre FS) sur le fichier binaire derrière la commande elle-même comme:
setfacl -m u:test1:r /bin/su
La commande ci-dessus modifie les permissions de ce fichier binaire, qui est en fait la commande "su", pour accorder à l'utilisateur "test1" accès en lecture seule pour ce fichier. Ainsi, lorsque l'utilisateur "test1" essaie "d'exécuter", la commande "su" qu'il ne peut pas exécuter le script derrière elle et devient "Permission refusée".
Il suffit d'exécuter "qui command_you_want_restricted" pour voir le fichier derrière elle.
J'ai testé cette méthode sur Red Hat 6.5 & 7 et il affecte l'utilisateur "test1", tous les autres utilisateurs peuvent continuer à fonctionner "su".
Vous demande spécifique:
"Ou, définir la stratégie pour avoir accès à toutes les commandes, à l'exception de "ssh" et "chat" commandements".
Vous pouvez faire la même chose avec les ACLs pour le groupe "démo" sur la commande binaires vous le souhaitez, mais je n'AI PAS TESTÉ avec des groupes et je vous suggère de l'essayer sur une VM de test ou quelque chose à l'avance.
Ce qui concerne,
Eh bien, c'est en fait une citation de vous question initiale...
Vous pouvez utiliser le bouton "setfacl de la commande" sur tous les fichiers binaires à l'exception de ceux que vous souhaitez que les utilisateurs de continuer à l'utiliser.
Merci beaucoup! 😉
OriginalL'auteur AnythingIsFine
La réponse standard est d'utiliser un shell restreint, ce qui en fait la dernière entrée dans le fichier de mot de passe pour les utilisateurs de ce groupe. Comme vous pouvez exécuter des commandes externes de choses comme vim: http://web.physics.ucsb.edu/~pcs/apps/editors/vi/vi_unix.html
ce ne semble pas être une bonne idée si vous êtes en essayant de produire un environnement restreint. La première chose que l'utilisateur pourrait faire est d'utiliser les commandes dans le lien ci-dessus pour exécuter
/bin/bash
il serait en dehors de l'environnement restreint.Une meilleure idée serait de mettre chaque connexion de l'utilisateur dans une prison chroot ou peut-être un léger conteneur (donc si ils cassent quelque chose, c'est leur propre conteneur). Jetez un oeil à Docker - http://docker.io .
OriginalL'auteur abligh
@Dodzi Dzakuma solution est idéal si vous ne disposez que de quelques commandes que vous souhaitez désactiver.
Toutefois, si vous souhaitez uniquement pour permettre à l'utilisateur d'exécuter plusieurs commandes, voici une meilleure solution:
Changer le shell de l'utilisateur restreint de bash
Créer un répertoire bin dans le répertoire principal de l'utilisateur
Changer l'utilisateur du CHEMIN d'accès par défaut pour le répertoire bin
Créer des liens symboliques de la commande(s) que l'utilisateur a besoin
Empêcher l'utilisateur de modifier ~/.bashrc
C'est mieux si vous ne souhaitez autoriser l'utilisateur à exécuter plusieurs commandes, car au lieu de définir des alias de TOUTES les commandes possibles pour les désactiver, vous ne mettre qu'un lien symbolique de commandes que vous souhaitez autoriser.
OriginalL'auteur Victor Wong
Je suis un peu surpris de voir que personne n'a encore utilisé le natif SSH fonctionnalité dans leur réponse... je sais que je suis en 4 ans de retard, mais il pouvait encore être utile 🙂
Lors de l'utilisation de SSH, vous devez utiliser les touches pour la connexion; comme nous parlons de la sécurisation d'un serveur, la désactivation de la connexion par mot de passe devrait être l'une des premières choses que vous devriez faire. Donc, comme vous êtes à l'aide des touches, vous avez maintenant la possibilité de ne permettre qu'une seule commande par clé en ajoutant ceci dans le fichier authorized_keys:
La
only
de commande est une liste blanche fonctionnalité qui permet à l'utilisateur d'exécuter uniquement les commandes. Vous n'avez pas à faire des exceptions sur votre système(s) par la modification de la binaire par défaut des autorisations (qui est un administrateur de l'enfer..). Assurez-vous de définir leauthorized_keys
fichier non accessible en écriture pour l'utilisateur.La seule commande est un script qui doit être installé dans
/usr/bin/
avec 775 autorisations.Lire: Le Que Pour le SSH Forcé Commandes
Maintenant, vous comprenez comment cela fonctionne, vous pouvez simplement en liste blanche toute commande qui vous permettent à l'utilisateur d'exécuter:
Ou l'utilisation d'un
.onlyrules
fichier avec la bonne syntaxe, attention à ne pas utiliser tout gourmand regex..OriginalL'auteur Robbert