lsattr:读取标志时设备的 ioctl 不合适

lsattr:读取标志时设备的 ioctl 不合适

对于我们的一台运行 CentOS 6.0 的 Linux 服务器,如果我执行 lsattr /home,我会得到如下信息(以 root 身份):

$lsattr /home
lsattr: Inappropriate ioctl for device While reading flags on /home/user
lsattr: Inappropriate ioctl for device While reading flags on /home/user
lsattr: Inappropriate ioctl for device While reading flags on /home/DIR

现在,我尝试使用 chattr 进行一些更改

$chattr -R -i /home
chattr: Inappropriate ioctl for device while reading flags on /home

坐骑回归:

$mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda3 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)

我不知道该如何解决这个问题。有人能帮忙吗?

答案1

所在的文件系统/home必须支持扩展属性。由于/home很可能位于您的LogVol00分区上(而不是 NFS 挂载或类似的东西),因此您必须使用user_xattr挂载选项挂载文件系统:

mount -o 重新挂载,用户属性 /

注意对于ext4user_xattr都是acl默认启用. 这对于其他文件系统来说有所不同。

答案2

我意识到这是一个老话题,但看起来 /home 下的目录是自动挂载的 nfs 导出,而 nfs 不支持 chattr、lsattr 等。您必须在 nfs 服务器的文件系统上进行此项设置(如果可能)以使文件不可变。

答案3

我假设 /home 位于您的根卷下。您需要做的是更改根卷的 /etc/fstab 文件以添加“acl”选项。这将激活文件系统上的 ACL。

然后要激活 ACL,请重新挂载根卷(mount -o remount,acl /),或者重新启动系统(因为 acl 选项现在位于根卷的选项字段中)。

相关内容