URL: https://linuxfr.org/forums/linux-general/posts/diverses-questions-permissions-bashexec-suid-et-sed Title: diverses questions : permissions, bash/exec, suid et sed Authors: erwanj Date: 2008年03月07日T14:19:55+01:00 Tags: Score: 0 permissions sur les dossiers: est-ce que rw- et r-- sont equivalentes pour un dossier? je pensais qu'avec un rw, je pourrais créer (ou renomer...) un fichier dans le dossier. ex : $ ls -l total 4 drw------- 2 erwan erwan 4096 2008年03月07日 13:02 dossier $ chmod u=rwx,go= dossier/ $ touch dossier/fichier $ ls dossier/ fichier $ chmod u=rw,go= dossier/ $ mv dossier/fichier dossier/fichier1 mv: accès de `dossier/fichier1': Permission non accordée suid et script bash : pourquoi un script bash (commençant par #!/bin/bash) et pour lequel le suid est placé est exécuté avec l'utilisateur qui lance le script et non pas par l'utilisateur propriétaire du fichier? bash et exec : d'après man bash : exec [-cl] [-a name] [command [arguments]] If command is specified, it replaces the shell. No new process is created. The -c option causes command to be executed with an empty environment. Si l'option -c est utilisée, on lance command dans un environnement d'exécution vide. Donc si je ne l'utilise l'option -c, toute variable déclarée et non exportée dans mon bash doit être accessible dans command? par exemple : monscript : #!/bin/bash echo \$VAR=$VAR $ bash $ VAR=toto $ ./monscript $VAR= #--> logique puisque je n'ai pas exporté ma variable VAR $ exec ./monscript $VAR= #--> le process monscript remplace le bash dans lequel il a été lancé. VAR a été déclarée dans ce bash. Pourquoi n'a-t-il pas accès à la variable VAR? Pourquoi est-on obligé de l'exporter? enfin, question sed : $ ls -ld /tmp/ | sed -n 's/\(^[a-z]*\)\(\)/1円 __/gp' La regex définie un début ligne composé d'une succession (0 à n) de lettres minuscule que l'on inclu dans une sous-expression. Dans le remplacement, j'utilise 1円 pour n'afficher que ce qui correspond à la première (et unique) sous-expression. Je le fait suivre de deux caractères __ $ ls -ld /tmp/ | sed -n 's/\(^[a-z]*\)\(\)/1円 __/gp' drwxrwxrwt __ 7 root root 4096 2008年03月07日 10:24 /tmp/ Je m'attendais à avoir ce résultat : drwxrwxrwt __ Pourquoi sed m'affiche le reste? c'est-à-dire "7 root root 4096 2008年03月07日 10:24 /tmp/" La commande me permettant de le faire est (j'ajoute une sous-expression vide): $ ls -ld /tmp/ | sed -n 's/\(^[a-z]*\)\(\)/1円 __/gp' drwxrwxrwt __ Merci

AltStyle によって変換されたページ (->オリジナル) /