Accueil Solution du challenge Oaxaca de SadServers.com
Post
Annuler

Solution du challenge Oaxaca de SadServers.com

Scenario: “Oaxaca”: Close an Open File

Level: Medium

Type: Fix

Tags: bash unusual-tricky

Description: The file /home/admin/somefile is open for writing by some process. Close this file without killing the process.

Test: lsof /home/admin/somefile returns nothing.

Time to Solve: 15 minutes.

Voyons le processus qui utilise le fichier :

1
2
3
4
5
6
admin@i-05fd8a4af5206358f:/$ sudo lsof /home/admin/somefile 
COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
bash    794 admin   77w   REG  259,1        0 272875 /home/admin/somefile
sudo    806  root   77w   REG  259,1        0 272875 /home/admin/somefile
admin@i-05fd8a4af5206358f:/$ ps aux | grep "screen|tmux"
admin        811  0.0  0.1   5208   652 pts/0    S<+  10:53   0:00 grep screen|tmux

Il s’agit de bash et je ne vois aucune session screen ni tmux présente…

Je fouille dans le dossier de l’administrateur :

1
2
3
4
5
6
admin@i-05fd8a4af5206358f:/$ cd home/admin/
admin@i-05fd8a4af5206358f:~$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .local  .profile  .selected_editor  .ssh  agent  openfile.sh  somefile
admin@i-05fd8a4af5206358f:~$ cat openfile.sh 
#!/bin/bash
exec 66> /home/admin/somefile

La commande exec de bash a été utilisée pour ouvrir un descripteur de fichier.

On peut normalement le fermer de cette façon :

1
2
3
4
5
admin@i-05fd8a4af5206358f:~$ exec 66>&-
admin@i-05fd8a4af5206358f:~$ sudo lsof /home/admin/somefile 
COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
bash    794 admin   77w   REG  259,1        0 272875 /home/admin/somefile
sudo    833  root   77w   REG  259,1        0 272875 /home/admin/somefile

Hmmm, ça n’a pas fonctionné. Pas le bon descripteur ?

Voyons voir les descripteurs du PID courant (bash) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
admin@i-05fd8a4af5206358f:~$ echo $$
794
admin@i-05fd8a4af5206358f:~$ ls /proc/794/fd -al
total 0
dr-x------ 2 admin admin  0 Mar  2 10:52 .
dr-xr-xr-x 9 admin admin  0 Mar  2 10:52 ..
lrwx------ 1 admin admin 64 Mar  2 10:52 0 -> /dev/pts/0
lrwx------ 1 admin admin 64 Mar  2 10:52 1 -> /dev/pts/0
lrwx------ 1 admin admin 64 Mar  2 10:52 2 -> /dev/pts/0
lrwx------ 1 admin admin 64 Mar  2 10:52 255 -> /dev/pts/0
l-wx------ 1 admin admin 64 Mar  2 10:52 77 -> /home/admin/somefile
admin@i-05fd8a4af5206358f:~$ exec 77>&-
admin@i-05fd8a4af5206358f:~$ sudo lsof /home/admin/somefile 
admin@i-05fd8a4af5206358f:~$

Ici, il s’agissait du descripteur 77.

Cet article est sous licence CC BY 4.0 par l'auteur.