zoukankan      html  css  js  c++  java
  • 文件属性之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也是由内核填的。

  • 相关阅读:
    随机验证码实验报告
    输出验证
    原码,反码,补码!
    枚举验证结论
    Java第一次考试有感
    暑假第七周学习进度报告
    暑假第六周学习进度报告
    MySQL学习笔记(22)——常用的日期时间函数
    execute()返回值——true or false
    ORM
  • 原文地址:https://www.cnblogs.com/makefile/p/3944352.html
Copyright © 2011-2022 走看看