• 莫名
    2020-12-29
    getcap $(which ping) setcap -r $(which ping) 顺便举个之前使用过的例子:普通用户默认没有 tcpdump 抓包权限,可添加 net_raw、net_admin caps: sudo setcap cap_net_raw,cap_net_admin+ep $(which tcpdump)

    作者回复: 赞!

    共 3 条评论
    33
  • 朱新威
    2020-12-28
    已经更新20讲了,莫名有点心慌,生怕这么好的专栏结束了🤪

    编辑回复: 哈哈别慌哦,咱们后续还有专题加餐,等更新的时间里,你还可以复习已有内容哦。

    共 3 条评论
    7
  • morse
    2021-01-11
    老师, 您好, 我在 Ubuntu20.04 下删除 ping 的 capabilities 后, 切换别的用户后, 还是可以正常使用 ping 的, 我进行了以下操作. # getcap /usr/bin/ping # 发现ping 具有cap_net_raw capability /usr/bin/ping = cap_net_raw+ep # 删除全部 capabilites # sudo setcap -r /usr/bin/ping # 切换普通用户 sudo su - appuser # ping localhost # 可以正常工作 # capsh --print -- -c "/bin/ping -c 1 localhost" #可以看到还是具有cap_net_raw Current: = Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read .... # capsh --print # 打印当前用户全部 capabilities, 发现当前用户是具有 cap_net_raw 给我的感觉, 在 Ubuntu 20.04 中, useradd appuser 创建好的用户, 初始就具有一定的 capabilites, 所以在运行程序的时候, 用户自身的 capabilities+程序的 capabliities 是最终的. 所以就算把文件的 capabilities 删除, 只要用户还具有这个能力, 那么还是可以正常执行的. 那么我的问题来了, 我没有找到, 如何对一个用户限制这种 capabilities, 即我 useradd 一个 用户, 怎么限制这个用户的 capabilities.
    展开

    作者回复: @morse 你用capsh看到的cap_net_raw 应该是在Binding Cap而不是在Effective Cap里。 ubuntu20.04 里安装的ping程序本身允许普通用户ping ICMP. https://unix.stackexchange.com/questions/617927/why-ping-works-without-capability-and-setuid

    
    3
  • Christopher
    2021-08-02
    selinux是不是实际上就是限制cap权限的操作

    作者回复: selinux 是通过对object, 例如进程\文件, 打上label来控制这些object的相互作用。

    
    1
  • Tony
    2020-12-28
    老师你好。请问在Linux中(比如centos),在允许普通用户使用docker以后,如何如何限制用户不能读取,宿主机上非该普通用户的文件?

    作者回复: 我想你问的问题是关于rootless container的?普通用户可以启动容器,但是用户权限并没有提高,非该用户的文件还是不能读写。

    共 2 条评论
    1
  • 老酒馆
    2020-12-28
    getcap /usr/bin/ping 查看ping进程当前cap setcap cap_net_admin,cap_net_raw+p /usr/bin/ping 设置ping进程cap
    
    5
  • heyhd9475
    2021-10-11
    老师想问一下文件的capabilities是保存在什么地方呢,getcap应该也是从什么地方读取的这些信息吧,是inode,file,dentry?
    
    1
  • 王皓月
    2021-01-25
    老师您好,我想要在容器中使用systemctl,除了启用特权模式还有别的办法吗?看到过大牛在docker run的时候加了/sys/fs/cgroup:/sys/fs/cgroup就可以在容器内使用systemctl,这个和特权模式有什么区别?
    
    1
  • 段殷澄
    2022-11-07 来自陕西
    我ubuntu的root用户怎么默认只赋予了15个capabilities
    
    
  • Bill
    2022-05-25
    Best ever
    
    