Topic: --configtest CanRemoveDir CanRemoveFile

Hello,
Un petit soucis avec les Directives CanRemoveDir et CanRemoveFile lorsqu'on execute MySecureShell --configtest on obtient :

CanRemoveDir = false
CanRemoveFile = false

Alors qu'en fait c'est "true"

Le booléen à valeur par Defaut à true n'est pas remonté correctement

A mon avis 2 solutions :
Soit nouveau type : CONF_IS_BOOLEAN_DEFAULT_TRUE
Soit renommer CanRemoveDir et CanRemoveFile en :
DisableRemoveDir
DisableRemoveFile
avec valeurs par défaut à false.

Jok

Re: --configtest CanRemoveDir CanRemoveFile

Bonjour,


Il faut faire très attention à la commande "MySecureShell --configtest", car elle affiche la configuration active pour l'utilisateur qui exécute la commande ! wink

Re: --configtest CanRemoveDir CanRemoveFile

Non, sans blague lol
Bon alors je te vais te faire un dessin : roll

sftp_config
<Default>
</Default>
# sudo -u tstmss MySecureShell --configtest
--- tstmss ---
GlobalDownload        = 0 bytes/s
GlobalUpload          = 0 bytes/s
Download              = 0 bytes/s
Upload                = 0 bytes/s
StayAtHome            = false
VirtualChroot         = false
LimitConnection       = 0
LimitConnectionByUser = 0
LimitConnectionByIP   = 0
Home                  = /home/tstmss
Shell                 = (null)
ResolveIP             = false
IdleTimeOut           = 0
IgnoreHidden          = false
DirFakeUser           = false
DirFakeGroup          = false
DirFakeMode           = {default}
HideFiles             = {nothing}
HideNoAccess          = false
ByPassGlobalDownload  = false
ByPassGlobalUpload    = false
MaxOpenFilesForUser   = 0
MaxReadFilesForUser   = 0
MaxWriteFilesForUser  = 0
ShowLinksAsLinks      = false
PathDenyFilter        = (null)
SftpProtocol          = {default}
LogFile               = {default}
ConnectionMaxLife     = 0s
DisableAccount        = false
Charset               = (null)
GMTTime               = {nothing}
CanRemoveDir          = false
CanRemoveFile         = false
ExpireDate            = {nothing}
MinimumRights         = 0000 0000
DefaultRights         = 0000 0000
Config is valid.
#sftp tstmss@localhost
sftp> mkdir tutu
sftp> ls -l 
drwxrwxrwx    2 tstmss  tstmss      4096 May 29 18:41 tutu
sftp> rmdir tutu
sftp> ls -l
sftp> lcd /etc
sftp> put motd
sftp> ls -l
-rw-rw-rw-    1 tstmss  tstmss      1534 May 29 18:43 motd
sftp> rm motd
Removing /home/tstmss/motd
sftp> ls -l
sftp> quit

On a bien configtest qui nous dit :
CanRemoveDir          = false
CanRemoveFile         = false
alors que rmdir et rm sont actifs tongue

(De même, DefaultRights         = 0000 0000 alors que c'est plutôt 0666 0777 comme on le voit) yikes

JoK

Re: --configtest CanRemoveDir CanRemoveFile

JoKnarf wrote:

Non, sans blague lol
Bon alors je te vais te faire un dessin : roll

Dessine moi un mouton lol:lol::lol:


JoKnarf wrote:
sftp_config
<Default>
</Default>
..
#sftp tstmss@localhost
sftp> mkdir tutu
sftp> ls -l 
drwxrwxrwx    2 tstmss  tstmss      4096 May 29 18:41 tutu
sftp> rmdir tutu
sftp> ls -l
sftp> lcd /etc
sftp> put motd
sftp> ls -l
-rw-rw-rw-    1 tstmss  tstmss      1534 May 29 18:43 motd
sftp> rm motd
Removing /home/tstmss/motd
sftp> ls -l
sftp> quit

On a bien configtest qui nous dit :
CanRemoveDir          = false
CanRemoveFile         = false
alors que rmdir et rm sont actifs tongue

Ah oui, j'avais oublié, c'est juste un bug "d'affichage" wink

Extrait du code "faux" (main.c):

params->status |=  ... hash_get_int_with_default
JoKnarf wrote:

(De même, DefaultRights         = 0000 0000 alors que c'est plutôt 0666 0777 comme on le voit) yikes

JoK

Alors quand defaultrights est par défaut, alors les droits utilisés sont ceux envoyé par le client sftp ! wink

Extrait du code (SftpServer/Sftp.c):

mode = gl_var->rights_file ? gl_var->rights_file : (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) ? a->perm : 644;

5 (edited by JoKnarf 2008-05-30 10:19:43)

Re: --configtest CanRemoveDir CanRemoveFile

Oui, tout a fait d'accord, c'est un bug d'affichage, mais c'est un peu gênant pour checker la conf, non ? smile

C'est pourquoi j'avais suggéré pour le corriger :
Soit nouveau type : CONF_IS_BOOLEAN_DEFAULT_TRUE
Soit renommer CanRemoveDir et CanRemoveFile en :
DisableRemoveDir
DisableRemoveFile
comme ça valeurs par défaut à false : déjà gérées

mais c'est juste pour aider, MSS est déjà si proche de la perfection wink


sinon concernant les DefaultRights, je ne crois pas trop que ce soit côté client :

main.c
      if (hash_get_int("DefaultRightsDirectory") > 0)
        params->rights_directory = hash_get_int("DefaultRightsDirectory");
      else
        params->rights_directory = 0777;
      if (hash_get_int("DefaultRightsFile") > 0)
        params->rights_file = hash_get_int("DefaultRightsFile");
      else
        params->rights_file = 0666;

moi je dis ça je dis rien ...:rolleyes:


A+


JoK

Re: --configtest CanRemoveDir CanRemoveFile

JoKnarf wrote:

Oui, tout a fait d'accord, c'est un bug d'affichage, mais c'est un peu gênant pour checker la conf, non ? smile

C'est pourquoi j'avais suggéré pour le corriger :
Soit nouveau type : CONF_IS_BOOLEAN_DEFAULT_TRUE
Soit renommer CanRemoveDir et CanRemoveFile en :
DisableRemoveDir
DisableRemoveFile
comme ça valeurs par défaut à false : déjà gérées

mais c'est juste pour aider, MSS est déjà si proche de la perfection wink

Ce bug est corrigé dans MySecureShell 1.1 wink


JoKnarf wrote:

sinon concernant les DefaultRights, je ne crois pas trop que ce soit côté client :

main.c
      if (hash_get_int("DefaultRightsDirectory") > 0)
        params->rights_directory = hash_get_int("DefaultRightsDirectory");
      else
        params->rights_directory = 0777;
      if (hash_get_int("DefaultRightsFile") > 0)
        params->rights_file = hash_get_int("DefaultRightsFile");
      else
        params->rights_file = 0666;

moi je dis ça je dis rien ...:rolleyes:


A+


JoK

Ouh pinaize... je suis débile mad ... bon inutile de dire que les "else" sont faux et le bug est corrigé smile