无法写入 /var/log/btmp

Jas*_*per 4 ssh permissions logs

我最近在我的 btmp 日志中有一堆条目 [因为我的愚蠢举动] 我解决了这个问题,但现在我想清除该日志,我将它复制到其他地方以供参考,然后我试图将文件,但无济于事。然后我检查了文件本身的权限,一切看起来都正确吗?只是不确定为什么它不会让 sudo 访问该文件。

user@localhost:~$ sudo cat /dev/null > /var/log/btmp
-bash: /var/log/btmp: Permission denied
user@localhost:~$ ls -a -l /var/log/btmp
-rw-rw---- 1 root utmp 5502336 Aug 20 18:59 /var/log/btmp
Run Code Online (Sandbox Code Playgroud)

只是在寻找其他一些想法.. 我尝试更改权限,然后仅仅因为它而将它们更改回来。我还尝试了其他一些方法来删除文本。但我想弄清楚为什么这不仅行得通。谢谢你的帮助!

ste*_*ver 5

您的命令不使用 sudo 写入日志文件 - 它(不必要地)使用 sudo 来 cat /dev/null。通过>操作员的写入(输出重定向)仍然以您的普通用户身份完成。

您可以执行以下任一操作

sudo sh -c 'cat /dev/null > /var/log/btmp'
Run Code Online (Sandbox Code Playgroud)

或者

cat /dev/null | sudo tee /var/log/btmp
Run Code Online (Sandbox Code Playgroud)

然而,真的不需要猫任何东西;您可以通过将任何内容重定向到它来同样很好地截断文件

sudo -i
> /var/log/btmp
exit
Run Code Online (Sandbox Code Playgroud)

或使用truncate命令

sudo truncate -s0 /var/log/btmp 
Run Code Online (Sandbox Code Playgroud)