CentOS: 让普通用户控制网络接口

来源:互联网 发布:mysql 线程阻塞 编辑:程序博客网 时间:2024/04/29 04:50

普通用户一般不需要去开关网络接口, 特殊情况下,需要普通用户拥有这一权力,例如ppp/vpn之类的,

例如我们需要用户能开启关闭一个网络接口eth1

需要编辑/etc/sysconfig/network-scripts/ifcfg-eth1

设置USERCTL为yes, 如下:

PROTO=staticDEVICE=eth1ONBOOT=yesIPADDR=192.168.137.137NETMASK=255.255.255.0TYPE=EthernetBOOTPROTO=noneUSERCTL=yesPREFIX=24GATEWAY=192.168.137.1DNS1=192.168.137.1DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noNAME=eth1UUID=9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04LAST_CONNECT=1404040062

普通用户即可用 ifup eth1 / ifdown eth1 来开关网络接口

有时候设置了

ONBOOT=yes

但是还不能开机自动连接网络,可以在 /etc/rc.local 里加入 /sbin/ifup eth0


原理:

普通用户通过ifup/ifdown 操作网络接口时, 会调用 /usr/sbin/usernetctl, 这个程序是setuid的程序,

usernetctl 检查配置文件中USERCTL变量的值,如果为真,则允许普通用户进行up/down之类的简单操作.

如下:

if [ ${UID} != 0 ]; then

    if [ -x /usr/sbin/usernetctl ]; then

    source_config

    if /usr/sbin/usernetctl ${CONFIG} report ; then

        exec /usr/sbin/usernetctl ${CONFIG} up

    fi  

    fi  

    echo $"Users cannot control this device." >&2

    exit 1

fi

(参见: /etc/sysconfig/network-scripts/ifup )


转载自:http://hi.baidu.com/zypublic111

0 0
原创粉丝点击