rm -rf 无法删除会话文件

Sam*_*Lui 2 php nginx session

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
Run Code Online (Sandbox Code Playgroud)

2. sudo 删除所有文件

$ /var/lib/php/sessions$ sudo rm -rf ./*
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Esa*_*nen 5

这里的问题是路径名扩展发生在sudo. 的路径名扩展./*无权查看目录内容。因此,它不会rm -rf ./sess_716a24lf4tsnmfucpq50uf1pk7 ./sess_fkif8ed8k85olh53q9so1cd6s3 ./sess_ov6nrn16gg81i44u9angk3bls6像预期的那样扩展- 如果整个命令以root.

你可以在里面启动一个新的终端sudo。尝试:

sudo sh -c "rm -rf /var/lib/php/sessions/*"
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了完整路径,因为它比相对路径安全得多。有一次同事输入/而不是./inside sudo rm -rf。你可以想象发生了什么:对我来说不必要的恢复任务......而且在 sudoers 列表中少了一个用户。