Comment bloquer la commande, disons mkdir
pour un utilisateur spécifique?
Ce que j'ai fait simplement créer une fonction en lecture seule et 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
Test :
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
Donc, ma question est ce qui devrait être la façon de la réaliser? Y a-t-il un outil pour cela?
Mise à jour 1 # Mais si l'utilisateur est intelligent, il pourrait copier MKDir Binary et le renommer et l'utiliser. Alors, comment y parvenir?
Je ne sais pas comment le 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 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 (conflit de conflit /etc/lshell.conf
) interdit l'utilisateur foo
de l'utilisation mkdir
:
[foo]
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']
Afin de configurer un compte d'utilisateur pour utiliser LSHell par défaut, vous devez:
chsh -s /usr/bin/lshell foo
Lshell peut faire plus, comme:
|
).Et plus.
Mise à jour 1 # Résultat de test ajouté:
rahul:~$ which bash
/bin/bash
rahul:~$ dd if=$(which bash) of=my_bash
*** forbidden syntax: dd if=$(which bash) of=my_bash
rahul:~$ bash
*** forbidden command: bash
rahul:~$ cp /bin/bash my_bash
*** forbidden path: /bin/bash
rahul:~$ /bin/bash
*** forbidden command: /bin/bash
rahul:~$ sh
*** forbidden command: sh
rahul:~$ dash
*** forbidden command: dash
rahul:~$ env bash
*** forbidden command: env
rahul:~$ cp /bin/mkdir mycreatedir
*** forbidden path: /bin/mkdir
La manière dont je mettez habituellement implémenter ce type de restrictions nécessite que plusieurs conditions soient remplies, sinon la restriction peut être facilement contournée:
wheel
, le seul autorisé à utiliser su
(appliqué via PAM).L'utilisateur reçoit un identifiant correctement sécurisé rbash
avec un chemin en lecture seule pointant vers un privé ~/bin
, cette ~/bin/
Répertoire contient des liens vers des utilitaires simples:
$ ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 Sudo -> /usr/bin/Sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
l'utilisateur reçoit un environnement restreint en lecture seule (pense à des trucs comme LESSSECURE
, TMOUT
, HISTFILE
variables).
staff_u
et donné les droits d'exécution des commandes comme autre utilisateur requis via Sudo
.les utilisateurs /home
, /tmp
et éventuellement /var/tmp
sont polyinstanciés via /etc/security/namespace.conf
:
/tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root
/var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root
$HOME $HOME/$USER.inst/ tmpdir:create root
Aussi, /etc/security/namespace.init
fait tous les fichiers squelettiques à la lecture de l'utilisateur et appartenant à root
.
De cette façon, vous pouvez choisir si $USER
peut exécuter mkdir
sur son propre compte (via un lien dans le privé ~/bin
répertoire, provisionné via /etc/skel
, comme expliqué ci-dessus), au nom d'un autre utilisateur (via Sudo
) ou aucun du tout.
Ajouter un groupe mannequin, ajoutez l'utilisateur à ce groupe, chown root:somegroup /bin/mkdir
, chmod g-x /bin/mkdir
. Notez que cela s'appuie sur l'utilisateur de ne pas être en mesure de modifier leurs groupes. IIRC c'est vrai à GNU/Linux mais pas dans d'autres autres unités.
Le meilleur tel que j'ai testé est d'utiliser le profil.D meilleur et le moyen le plus sûr
[root@newrbe ~]# vim /etc/customalias.sh
Ajouter ci-dessous lignes:
alias rm="echo remove contenet is restricted"
alias poweroff="echo Poweroff is restricted"
alias chmod="echo Change Permission is restristed"
Sauvegarder et quitter
/etc/profile.d/ Cet emplacement contient des fichiers pour Bash Achion
[root@newrbe ~]# vim /etc/profile.d/customsource.sh
Ajouter ci-dessous lignes sous les fichiers Ces lignes bloqueront les commandes mentionnées pour les utilisateurs ci-dessous
if [ `whoami` == "user1" ] && [ `whoami` == "user2" ]; then
source /etc/customalias.sh
fi
sauvegarder et quitter
Maintenant, sortie et relogin
Cordialement, -Mansur