Comment bloquer la commande, disons mkdir
pour un utilisateur spécifique?
Ce que je viens de créer une fonction en lecture seule et de stocker dans le profil des utilisateurs ~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
Tester:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
Ma question est donc quelle devrait être la manière d'y parvenir? existe-t-il un outil pour cela?
Update 1 # Mais si l'utilisateur est intelligent, il pourrait copier le binaire mkdir et le renommer et l'utiliser. Alors, comment y parvenir?
linux
security
account-restrictions
restricted-shell
Rahul Patil
la source
la source
mkdir
et le renommer, ou même simplement copier et renommer le binaire existant. En outre, il existe un shell intégré pour remplacer les alias et les fonctions.cp /bin/mkdir mkdir2
puis l'utiliser :(cp -r /usr/local/lib ggg
va créer un répertoire appeléggg
(contenant une copie du contenu de/usr/local/lib
, le cas échéant, que l'utilisateur peut ensuite simplement supprimer). Vous pouvez utiliserfind / -type d -empty
pour rechercher un répertoire vide à copier.Réponses:
Je ne sais pas comment faire avec bash, mais je connais un autre shell qui restreint l'environnement utilisateur: lshell (shell limité) .
Un aperçu rapide de la configuration
Lshell est configuré via un fichier INI. Par défaut, il contient une liste blanche de commandes autorisées, mais il peut être facilement configuré pour interdire à l'utilisateur d'utiliser une commande spécifique.
Cette configuration (conf par défaut
/etc/lshell.conf
) interdit à l'utilisateurfoo
d'utilisermkdir
:Afin de configurer un compte d'utilisateur pour utiliser lshell par défaut, vous devez:
Lshell peut faire plus, comme:
|
).Et plus.
Mise à jour 1 # Résultat de test ajouté:
la source
allowed = 'all' - ['mkdir']
, ne pouvez-vous pas simplement exécuterbash
et être à nouveau libre?dd if=$(which bash) of=my_bash && chmod u+x my_bash && ./my_bash
. Je pense que le problème est l'absence d'une politique par défaut restrictive, c'est-à-dire que dans ce scénario, vous accordez des autorisations par défaut, puis REFUSEZ les autorisations en fonction d'une liste, alors que cela devrait être l'inverse: REFUSER par défaut, puis GRANT en fonction de la politique .cp
un binaire à son PATH (root
répertoire appartenant,rx
pour l'utilisateur), etrbash
empêche l'exécution./executables
. Répond-il à votre question?La façon dont j'implémente habituellement ce type de restrictions nécessite que plusieurs conditions soient remplies, sinon la restriction peut être facilement contournée:
wheel
groupe, le seul autorisé à utilisersu
(appliqué via PAM).L'utilisateur reçoit un
rbash
chemin d'accès correctement sécurisé avec un chemin en lecture seule pointant vers un privé~/bin
, ce~/bin/
répertoire contient des liens vers des utilitaires simples:l'utilisateur reçoit un environnement restreint, en lecture seule (penser à des choses comme
LESSSECURE
,TMOUT
,HISTFILE
variables).staff_u
et a le droit d'exécuter des commandes en tant qu'autre utilisateur selon les besoins viasudo
.l'utilisateur
/home
,/tmp
et/var/tmp
sont éventuellement polyinstanciés via/etc/security/namespace.conf
:En outre,
/etc/security/namespace.init
rend tous les fichiers squelettiques en lecture seule pour l'utilisateur et appartient àroot
.De cette façon, vous pouvez choisir d'
$USER
exécutermkdir
en son propre nom (via un lien dans le~/bin
répertoire privé , fourni via/etc/skel
, comme expliqué ci-dessus), au nom d'un autre utilisateur (viasudo
) ou aucun.la source
Ajoutez un groupe factice, ajoutez l'utilisateur à ce groupe
chown root:somegroup /bin/mkdir
,,chmod g-x /bin/mkdir
. Notez que cela repose sur le fait que l'utilisateur ne peut pas modifier ses groupes. IIRC c'est vrai dans GNU / Linux mais pas dans certains autres Unices.la source
Le meilleur que j'ai testé est d'utiliser Profile.d de la manière la plus sûre et la plus sûre
Étape # 1 (créer un fichier d'alias)
Ajouter des lignes ci-dessous:
Enregistrer et quitter
Étape # 2 (Créer un chargeur de profil)
/etc/profile.d/ cet emplacement contient des fichiers pour l'achèvement de bash
Ajouter des lignes ci-dessous sous les fichiers ces lignes bloqueront les commandes mentionnées pour les utilisateurs ci-dessous
sauvegarder et quitter
Maintenant, quittez et reconnectez-vous
Cordialement, -Mansur
la source
/etc/profile.d/
n'est pas pour l'bash
achèvement , c'est où placer les personnalisations de session de connexion pour les utilisateurs utilisant des shells de connexion de type POSIX, donc ce n'est généralement pas où lesbash
personnalisations d'alias (qui préfèrent entrer/etc/bash.bashrc
) iraient et il devrait avoir une syntaxe de shell POSIX (donc généralement, à la.
place desource
et=
au lieu de==
).installez sudoers et essayez de configurer là dont les utilisateurs et quelle commande.
la source
sudo
.