Chinaunix

标题: 用system函数调用iptables命令,提示权限不够?????? [打印本页]

作者: LYZC11    时间: 2011-11-02 09:42
标题: 用system函数调用iptables命令,提示权限不够??????
通过system调用ipatbles命令,提示权限不够,

  1. int main()
  2. {
  3.     system("/sbin/ iptables -P FORWARD ACCEPT");
  4.     return 0;
  5. }
复制代码
因为执行iptables命令需要在root权限下,请问如何在命令中描述使
命令在执行时直接在root权限下执行,而不需要手动切换或输入密码。
我是将程序编译成可执行程序放在嵌入式中运行。
另外,将这个程序在PC linux系统中测试也是提示权限不够???
作者: Godbach    时间: 2011-11-02 10:05
回复 1# LYZC11
    system("/sbin/ iptables -P FORWARD ACCEPT");

实际是这样吗?
作者: LYZC11    时间: 2011-11-02 10:10
回复 2# Godbach


    是啊,我只是随意用一条iptables命令先测试一下.但提示没有权限,如果在PC 上测试就需要先输入用户密码.
作者: Godbach    时间: 2011-11-02 11:01
回复  Godbach


    是啊,我只是随意用一条iptables命令先测试一下.但提示没有权限,如果在PC 上测试就 ...
LYZC11 发表于 2011-11-02 10:10


我指的是 /sbin 和 iptables 之间有个空格,实际代码是这样的吗
作者: LYZC11    时间: 2011-11-02 11:08
回复 4# Godbach


    对,是有一个空格,实际代码也是这样写的。
作者: LYZC11    时间: 2011-11-02 11:26
回复 4# Godbach


  如果没有空格会显示找不到命令,
所以,提示权限不够应该如何修改呢?
作者: LYZC11    时间: 2011-11-02 11:44
版主帮忙解答一下啊,
不知道  瀚海书香 版主在不???????????
作者: tempname2    时间: 2011-11-02 11:57
回复  Godbach
  如果没有空格会显示找不到命令,
LYZC11 发表于 2011-11-02 11:26


我C,解决办法就是加一个空格?
作者: Godbach    时间: 2011-11-02 12:37
回复 6# LYZC11

你这个问题很基本。
首先,你确定你的这个命令在 shell 里面能直接工作吗
作者: Godbach    时间: 2011-11-02 12:38
回复 6# LYZC11
iptables 在 CentOS 上的路径应该就是在 /sbin/iptables, 当然,你直接写 iptables 应该也是能够工作的。
作者: Godbach    时间: 2011-11-02 12:39
回复  Godbach


  如果没有空格会显示找不到命令,
所以,提示权限不够应该如何修改呢?
LYZC11 发表于 2011-11-02 11:26



你执行这个程序用的是什么用户,加了 sudo 没有,或者是 root 吗?
作者: LYZC11    时间: 2011-11-02 13:22
回复 11# Godbach


    执行这个程序是在用户模式下不是root,并且没有加sudo时,
    如果加入sudo后再输入用户密码是可以执行的成功的,
   但我是想通过写个C执行程序然后必要时直接调用这个程序,所以
   到时不可能再加入sudo,然后再手动输入密码。
作者: Godbach    时间: 2011-11-02 13:33
回复 12# LYZC11

这个命令是需要 root 权限的。

That's all.
作者: LYZC11    时间: 2011-11-02 13:40
回复 13# Godbach


    是的,我知道需要root权限,
    但如果用system函数调用怎么才能在执行时让它处于root权限呢?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2