我的操作系统:debian9。
我磁盘上的文件系统:
$ sudo blkid | awk '{print $1 ,$3}'
/dev/sda2: TYPE="ext4"
/dev/sda1: TYPE="vfat"
/dev/sda3: TYPE="ext4"
/dev/sda4: TYPE="ext4"
/dev/sda5: TYPE="swap"
现在到chattr +i
我的/etc/resolv.conf
:
sudo chattr +i /etc/resolv.conf
chattr: Operation not supported while reading flags on /etc/resolv.conf
ls -al /etc/resolv.conf
lrwxrwxrwx 1 root root 31 Jan 8 15:08 /etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
sudo mount -o remount,acl /
sudo chattr +i /etc/resolvconf/run/resolv.conf
chattr: Inappropriate ioctl for device while reading flags on /etc/resolvconf/run/resolv.conf
如何设置 chattr +i
我的/etc/resolve.conf
?
/dev/sda1
对于 windows 是空的。我的debian安装在
/dev/sda2
$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 1948840 0 1948840 0% /dev tmpfs 392020 5848 386172 2% /run /dev/sda2 95596964 49052804 41644988 55% /
acl
已安装。$ dpkg -l acl Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= ii acl 2.2.52-3+b1 amd64 Access control list utilities
这些 findmnt 命令没有输出信息:
sudo findmnt -fn / | grep -E "acl|user_xattr" sudo findmnt -fn / | grep vfat sudo findmnt -fn $(dirname $(realpath /etc/resolv.conf)) | grep tmpfs
你
/etc/resolv.conf
的可能是一个符号链接。有关详细信息,请参阅此说明。你可以试试:
根挂载点是否支持访问控制列表 (acl) 或扩展属性?
通过以下方式检查:
您的根分区是“VFAT”类型的吗?我相信“VFAT”不支持ACL。
通过以下方式检查:
或者您的符号链接目标目录可能是tmpfs? ACL在tmpfs上丢失
测试它:
干杯
如您所见,您似乎无法
chattr
在符号链接上设置属性。此外,它们不受tmpfs
. 手册页chattr
提到并且没有提到不可变标志或
chattr
intmpfs(5)
。ACL 或扩展属性与此无关,
chattr
属性直接存储在 inode 上,如inode 结构表中ext4
所示。您需要找到其他方法来防止您的程序对其进行修改。如果您将符号链接替换为静态文件,则
systemd-resolved
应该足够聪明以单独保留文件:如果您有其他可能修改它的程序(如 DHCP 客户端),您将不得不了解如何重新配置它们。或者
chattr +i /etc/resolv.conf
在将其设为静态文件而不是符号链接之后,但要注意无论尝试编写它,都可能不喜欢由此产生的错误。尝试使用 -f 标志
引导到 live cd 或 usb linux 安装,然后浏览到硬盘驱动器上的 resolv.conf 允许实现 chattr 的标准语法。