Назад | Перейти на главную страницу

rm -rf не может удалить файлы сеанса

1. перечислить файлы в каталоге сеанса

$ /var/lib/php/sessions$ sudo ls -la
total 20
drwx-wx-wt 2 root     root     12288 May 20 14:26 .
drwxr-xr-x 4 root     root      4096 Feb 26 21:15 ..
-rw------- 1 www-data www-data     0 May 20 14:26 sess_716a24lf4tsnmfucpq50uf1pk7
-rw------- 1 www-data www-data   124 May 20 14:26 sess_fkif8ed8k85olh53q9so1cd6s3
-rw------- 1 www-data www-data     0 May 20 14:25 sess_ov6nrn16gg81i44u9angk3bls6

2. sudo удалить все файлы

$ /var/lib/php/sessions$ sudo rm -rf ./*

3. Но файлы сеанса все еще существовали!

$ /var/lib/php/sessions$ sudo ls -la    
total 20
drwx-wx-wt 2 root     root     12288 May 20 14:26 .
drwxr-xr-x 4 root     root      4096 Feb 26 21:15 ..
-rw------- 1 www-data www-data     0 May 20 14:26 sess_716a24lf4tsnmfucpq50uf1pk7
-rw------- 1 www-data www-data   124 May 20 14:26 sess_fkif8ed8k85olh53q9so1cd6s3
-rw------- 1 www-data www-data     0 May 20 14:25 sess_ov6nrn16gg81i44u9angk3bls6

Проблема здесь в том, что расширение имени пути происходит ДО sudo. Расширение имени пути для ./* не имеет разрешения на просмотр содержимого каталога. Следовательно, он не будет расширен до rm -rf ./sess_716a24lf4tsnmfucpq50uf1pk7 ./sess_fkif8ed8k85olh53q9so1cd6s3 ./sess_ov6nrn16gg81i44u9angk3bls6 как предполагалось - и как было бы, если бы вся команда была запущена как root.

Вы можете запустить новый терминал внутри sudo. Пытаться:

sudo sh -c "rm -rf /var/lib/php/sessions/*"

Обратите внимание, что я использовал полный путь, потому что он намного безопаснее, чем относительный путь. Однажды коллега набрал / вместо того ./ внутри sudo rm -rf. Вы можете себе представить, что произошло: для меня ненужная задача восстановления ... и на одного пользователя меньше в списке sudoers.

Вы не указали, от имени какого пользователя вы работаете. Однако $ приглашение указывает, что вы работаете как стандартный пользователь, что, скорее всего, не www-data.

Итак, проблема в том, что разрешения файловой системы не позволяют вам удалить файлы, как вы можете видеть из ls -l вывод.

Это странно, может, сразу после удаления создаются новые сеансы?

Что произойдет, если вы попытаетесь удалить один файл?

sudo rm sess_716a24lf4tsnmfucpq50uf1pk7

Файл удаляется?