$ /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
$ /var/lib/php/sessions$ sudo rm -rf ./*
$ /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
Файл удаляется?