首页 > 代码库 > 文件属性之setuid位
文件属性之setuid位
setuid位是可执行文件的一个属性,
ls -l /bin/ping 或mount等可以看到权限为
-rwsr-xr-x 1 root root 含有s位,所属用户为root表明该文件可以被其他用户以该文件所属用户的权限去执行。因此root用户设置s位后普通用户可以执行。
ping需要root权限是因为要创建原始套接字发送ICMP报文。
因此你自己编写的程序要达到这种效果可以:
sudo chown root xxx
sudo chmod +s xxx
此处以root身份赋予之权限以后就可以方便的让普通用户直接执行了,无需再输入密码。当然不用输密码就可执行的方法还有一些,如通过visudo编辑/etc/sudoers,设置NOPASSWD的程序,用户,但执行时仍需在命令前输入sudo
ICMP套接字是3.0内核新加入的功能,容许不需要set-user-id和CAP_NET_RAW权限的ping程序的实现,然而没有了兼容性,并且需要调整一个内核参数:
sudo sysctl -w net.ipv4.ping_group_range=‘0 10‘
或者写/proc/sys/ipv4/ping_group_range
默认值是‘1 0‘,意味着没有用户能够使用这个特性
若系统不支持则在创建套接字时显示Protocal not supported
若没有权限是Permission denied
创建socket时使用SOCK_DGRAM,不是SOCK_RAW,意味着不会收到20字节的IP头,而且不需要自己计算校验和,内核会帮你计算。ICMP id也是由内核填的。
文件属性之setuid位
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。