Bonjour,

Je possède un serveur où j'ai chrooté un utilisateur "git".

Je peux me connecter en ssh git@server sans problèmes mais dès que je tente de faire :
- git clone "git@server:depot" ;
- scp git@server:/file ;
- ssh git@server commande (ex : ls, echo "toto") ;

Le serveur et le client restent en attentes d'E/S.

Les traces du serveurs montrent à l’antépénultième ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
3690  _llseek(0, 0, 0xbfc12200, SEEK_CUR) = -1 ESPIPE (Illegal seek)
Voici la trace complète du serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
3690  execve("/bin/bash", ["/bin/bash"], [/* 21 vars */]) = 0
3690  brk(0)                            = 0x86d2000
3690  fcntl64(0, F_GETFD)               = 0
3690  fcntl64(1, F_GETFD)               = 0
3690  fcntl64(2, F_GETFD)               = 0
3690  access("/etc/suid-debug", F_OK)   = -1 ENOENT (No such file or directory)
3690  access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
3690  mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77cf000
3690  access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
3690  open("/etc/ld.so.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/i686", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/tls/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/tls", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/i686", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i386-linux-gnu/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i386-linux-gnu", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/i686", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/tls/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/tls", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/i686", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/i386-linux-gnu/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/usr/lib/i386-linux-gnu", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/i686", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/tls/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/tls", 0xbfc11e50)    = -1 ENOENT (No such file or directory)
3690  open("/lib/i686/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i686/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i686/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i686/sse2", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i686/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i686/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/i686/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/i686", 0xbfc11e50)   = -1 ENOENT (No such file or directory)
3690  open("/lib/sse2/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/sse2/cmov", 0xbfc11e50) = -1 ENOENT (No such file or directory)
3690  open("/lib/sse2/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/sse2", 0xbfc11e50)   = -1 ENOENT (No such file or directory)
3690  open("/lib/cmov/libtinfo.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  stat64("/lib/cmov", 0xbfc11e50)   = -1 ENOENT (No such file or directory)
3690  open("/lib/libtinfo.so.5", O_RDONLY) = 3
3690  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300d\0\0004\0\0\0"..., 512) = 512
3690  fstat64(3, {st_mode=S_IFREG|0644, st_size=125424, ...}) = 0
3690  mmap2(NULL, 129100, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb77af000
3690  mmap2(0xb77cc000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c) = 0xb77cc000
3690  close(3)                          = 0
3690  open("/lib/libdl.so.2", O_RDONLY) = 3
3690  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\n\0\0004\0\0\0"..., 512) = 512
3690  fstat64(3, {st_mode=S_IFREG|0644, st_size=9844, ...}) = 0
3690  mmap2(NULL, 12408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb77ab000
3690  mmap2(0xb77ad000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb77ad000
3690  close(3)                          = 0
3690  open("/lib/libc.so.6", O_RDONLY)  = 3
3690  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240o\1\0004\0\0\0"..., 512) = 512
3690  fstat64(3, {st_mode=S_IFREG|0755, st_size=1437864, ...}) = 0
3690  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77aa000
3690  mmap2(NULL, 1452408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7647000
3690  mprotect(0xb77a3000, 4096, PROT_NONE) = 0
3690  mmap2(0xb77a4000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb77a4000
3690  mmap2(0xb77a7000, 10616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb77a7000
3690  close(3)                          = 0
3690  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7646000
3690  set_thread_area({entry_number:-1 -> 6, base_addr:0xb76466c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
3690  mprotect(0xb77a4000, 8192, PROT_READ) = 0
3690  mprotect(0xb77ad000, 4096, PROT_READ) = 0
3690  mprotect(0xb77cc000, 8192, PROT_READ) = 0
3690  mprotect(0x8129000, 4096, PROT_READ) = 0
3690  mprotect(0xb77ee000, 4096, PROT_READ) = 0
3690  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3690  open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = -1 ENOENT (No such file or directory)
3690  ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfc1213c) = -1 EINVAL (Invalid argument)
3690  brk(0)                            = 0x86d2000
3690  brk(0x86d3000)                    = 0x86d3000
3690  open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
3690  brk(0x86d4000)                    = 0x86d4000
3690  open("/usr/share/locale/locale.alias", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr_FR.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr_FR/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr.utf8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  open("/usr/lib/locale/fr/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
3690  getuid32()                        = 106
3690  getgid32()                        = 108
3690  geteuid32()                       = 0
3690  getegid32()                       = 108
3690  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3690  time(NULL)                        = 1380958891
3690  setuid32(106)                     = 0
3690  setgid32(108)                     = 0
3690  ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfc12258) = -1 EINVAL (Invalid argument)
3690  brk(0x86d5000)                    = 0x86d5000
3690  open("/proc/meminfo", O_RDONLY)   = -1 ENOENT (No such file or directory)
3690  brk(0x86d6000)                    = 0x86d6000
3690  rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
3690  rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTART}, {SIG_DFL, [], SA_RESTART}, 8) = 0
3690  rt_sigaction(SIGINT, {SIG_DFL, [], 0}, {SIG_DFL, [], 0}, 8) = 0
3690  rt_sigaction(SIGINT, {SIG_DFL, [], 0}, {SIG_DFL, [], 0}, 8) = 0
3690  rt_sigaction(SIGQUIT, {SIG_DFL, [], 0}, {SIG_DFL, [], 0}, 8) = 0
3690  rt_sigaction(SIGQUIT, {SIG_DFL, [], 0}, {SIG_DFL, [], 0}, 8) = 0
3690  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3690  rt_sigaction(SIGQUIT, {SIG_IGN, [], 0}, {SIG_DFL, [], 0}, 8) = 0
3690  uname({sys="Linux", node="NASServer", ...}) = 0
3690  brk(0x86d7000)                    = 0x86d7000
3690  stat64("/chroot/git/home/git", 0xbfc12050) = -1 ENOENT (No such file or directory)
3690  brk(0x86d9000)                    = 0x86d9000
3690  getcwd("/", 4096)                 = 2
3690  getpid()                          = 3690
3690  getppid()                         = 3689
3690  gettimeofday({1380958891, 823854}, NULL) = 0
3690  brk(0x86da000)                    = 0x86da000
3690  getpgrp()                         = 3688
3690  rt_sigaction(SIGCHLD, {0x808a220, [], SA_RESTART}, {SIG_DFL, [], SA_RESTART}, 8) = 0
3690  getrlimit(RLIMIT_NPROC, {rlim_cur=31508, rlim_max=31508}) = 0
3690  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3690  fcntl64(0, F_GETFL)               = 0 (flags O_RDONLY)
3690  fstat64(0, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
3690  _llseek(0, 0, 0xbfc12200, SEEK_CUR) = -1 ESPIPE (Illegal seek)
3690  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3690  read(0,
Voici le bash lancé à la connexion de l'utilisateur git :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#!/bin/bash
/usr/sbin/chroot_suid /chroot/git strace -f -o/trace /bin/bash
#exec -c /usr/sbin/chroot_suid /chroot/git  /bin/bash
Est-ce que vous auriez une petite idée ?
Je ne trouve pas beaucoup de littérature à ce sujet