由strace 得知问题出在这儿:
setxattr("./logfile", "security.capability", "/x01/x00/x00/x02/x00 /x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00", 20, 0) = -1 EOPNOTSUPP (Operation not supported)
查看 nfs/nfs3acl.c 得知,nfsroot文件系统只支持 “POSIX_ACL_XATTR_ACCESS” 和 “OSIX_ACL_XATTR_DEFAULT”。
ssize_t nfs3_getxattr(struct dentry *dentry, const char *name,
void *buffer, size_t size)
{
struct inode *inode = dentry->d_inode;
struct posix_acl *acl;
int type, error = 0;
if (strcmp(name, POSIX_ACL_XATTR_ACCESS) == 0)
type = ACL_TYPE_ACCESS;
else if (strcmp(name, POSIX_ACL_XATTR_DEFAULT) == 0)
type = ACL_TYPE_DEFAULT;
else
return -EOPNOTSUPP;
....
}
跟踪xattr_security.c
struct xattr_handler ext2_xattr_security_handler = {
.prefix = XATTR_SECURITY_PREFIX,
.list = ext2_xattr_security_list,
.get = ext2_xattr_security_get,
.set = ext2_xattr_security_set,
};
得到 ext2文件系统支持“security.”属性的文件.
解决办法:采用ext2文件格式的SD卡
$touch aaaa
$setcap cap_net_raw=ep ./aaaa
成功