s'il vous plait je veut savoir comment on peut bloqué une option d'une commande
par exemple comment bloqué l'option -l pour la commande ls
merci d'avance .
Version imprimable
s'il vous plait je veut savoir comment on peut bloqué une option d'une commande
par exemple comment bloqué l'option -l pour la commande ls
merci d'avance .
De manière simple, tu ne peux pas.
De manière compliquée, tu peux :
- réécrire la commande ls
- patcher la commande ls de manière à ce qu'elle ne réagisse plus à cette option
La 2eme option est carrément sale
tu peux aussi renomer ls en ls.original
et utiliser un alias de ls qui contient par exemple "ls.original -rt"
dans le .profile de l'utilisateur ou son .bashrc
et ainsi cet utilisateur est limiter à ces options mais c'est pas infaillible surtout si l'utilisateur n'est pas chrooté, il lui suffit de faire un ls dans /bin pour trouver l'astuce...
D'autant plus que ça ne va pas forcément résoudre le problème ;)
Pourquoi vouloir bloquer une option à une commande ?
Dans ton exemple, il est ultra simple de contourner ce genre de blocage ! Par exemple, en utilisant un petit script perl. Ou encore, en téléchargeant les sources de ls et en les compilant ;)
Ci-dessous, j'ai modifié les droits de la commande "ls" pour qu'elle ne soit plus exécutable par les utilisateurs (c'est un peu plus violent que ton blocage, mais c'est pour l'exemple).
J'ai ensuite codé un petit script perl "ls.pl" que je lance et qui m'affiche bien le contenu du répertoire...
Bon, c'est minimaliste (je n'ai pas fait de conversion des uid/gid vers le vrai nom), mais c'était pour l'exemple...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 $ ls -bash: /bin/ls: Permission denied $ cat ls.pl #!/usr/bin/perl $rep=$#ARGV?".":$ARGV[0]; opendir my $fh_rep, $rep or die "impossible d'ouvrir le répertoire $rep: $!\n"; my @fic_rep = grep { !/^\.\.?$/ } readdir $fh_rep; foreach $fic (@fic_rep) { ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($fic); printf "%04o\t%s:%s\t%s\t%s\n", $mode & 07777, $uid, $gid, scalar localtime $mtime, $fic; } $ perl ~/test/ls.pl 0644 1003:100 Thu Apr 7 14:46:23 2011 A-large.in 0644 1003:100 Thu Apr 7 16:39:05 2011 A-prog.pl 0644 1003:100 Thu Apr 7 16:39:11 2011 A-large.pl.out 0644 1003:100 Thu Apr 7 14:33:26 2011 A-small.in 0644 1003:100 Thu Apr 7 14:45:35 2011 A-small.py.out 0644 1003:100 Thu Apr 7 16:57:58 2011 B-sample.in 0644 1003:100 Thu Apr 7 14:45:21 2011 A-small.pl.out 0644 1003:100 Thu Apr 7 18:02:53 2011 B-small.out 0644 1003:100 Thu Apr 7 18:08:53 2011 input.txt 0644 1003:100 Thu Apr 7 18:04:39 2011 B.cpp 0644 1003:100 Thu Apr 7 18:02:36 2011 B-small.in 0644 1003:100 Thu Apr 7 14:37:36 2011 A-sample.in 0644 1003:100 Thu Apr 7 14:43:00 2011 A-prog.py 0644 1003:100 Thu Apr 7 14:47:40 2011 A-large.py.out 0644 1003:100 Thu Apr 7 18:02:15 2011 B-prog.pl 0644 1003:100 Thu Apr 7 18:09:01 2011 output.txt
Seconde exemple en compilant ls :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ wget http://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.9.tar.gz $ tar xvzf coreutils-8.9.tar.gz $ cd coreutils-8.9 $ ./configure $ make $ cd .. $ cp coreutils-8.9/src/ls . $ ls -bash: /bin/ls: Permission denied $ ./ls -l total 428 -rw-r--r-- 1 senga users 1353 Apr 7 14:46 A-large.in -rw-r--r-- 1 senga users 2018 Apr 7 16:39 A-large.pl.out -rw-r--r-- 1 senga users 2018 Apr 7 14:47 A-large.py.out -rw-r--r-- 1 senga users 461 Apr 7 16:39 A-prog.pl -rw-r--r-- 1 senga users 416 Apr 7 14:43 A-prog.py -rw-r--r-- 1 senga users 30 Apr 7 14:37 A-sample.in -rw-r--r-- 1 senga users 805 Apr 7 14:33 A-small.in -rw-r--r-- 1 senga users 1539 Apr 7 14:45 A-small.pl.out -rw-r--r-- 1 senga users 1539 Apr 7 14:45 A-small.py.out ...
merci a vous pour votre temps :D
c'est résolut :ccool:
Ça serait bien de dire comment c'est résolu ;)
Et je me permets d'insister : mon message précédent est parfaitement légitime malgré le petit vote négatif qui est, comme bien souvent, super utile.
Que tu modifies le ls de base de ta distribution, que tu fasses un alias, etc... tu ne pourras jamais empêcher quelqu'un qui veut accéder à ces infos d'y accéder, donc je pense qu'il faut revoir le problème... à savoir, pourquoi chercher à bloquerCode:ls -l
Salut tout le monde,
Je remonte le sujet parce que je viens de tomber sur lshell, qui apparemment se prête bien à la demande initiale et plus si affinité...
;)
Intéressant comme projet, mais bon, si tu es obligé de bloquer perl, gcc, etc... ça peut devenir compliqué :p
Je ne vois pas comment empêcher quelqu'un qui le veut d'avoir accès à une commande aussi basique que ls sur un système standard.
Même si tout est bloqué, qu'est ce qui l'empêche de compiler ls sur un autre système et de le récupérer ?
'fin bref, my 2 cents ;)