关于nfsroot 中 libcap 无法使用setcap 问题

由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

成功

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值