Linux程序权限:如何将程序更改为可由所有用户执行?

时间:2012-03-19 19:07:29

标签: linux executable privileges

我编写了一个python程序,需要将aircrack程序调用到某些任务中,但是我遇到了这个特权的麻烦。最初在命令行中调用aircrack程序,它在开始时需要“sudo”。之后,我检查了可执行文件的位置,发现它位于/usr/sbin/下。现在我的程序由apache驱动,默认用户是www-data。如果我使用没有“sudo”的用户www-data执行程序,它将不会给出任何结果。

我搜索了一下这个问题,发现我们可以通过执行sudo chmod 4755 /usr/sbin/airodump-ng来更改aircrack程序的所有者。我试过了,权限从-rwxr-xr-x更改为-rwsr-xr-x。我没有“sudo”再一次执行了命令,但它没有任何区别。

我的问题是:如何更改程序的权限,以便任何没有“sudo”的用户都可以执行它?如果我用“sudo”运行程序,那么输出文件由“root”拥有,这给我的程序增加了更多的复杂性。请帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

首先,我们都不能替换chmod手册页(因此我首先引用它):

   A numeric mode is from one to four octal digits (0-7), derived by adding up the bits 
   with values 4, 2, and 1.  Omitted digits are assumed to be leading zeros.  The first
   digit  selects the set user ID (4) and set group ID (2) and restricted deletion or 
   sticky (1) attributes.  The second digit selects permissions for the user who owns the
   file: read (4), write (2), and execute (1); the third selects permissions for other 
   users in the file's group, with the same values; and the fourth for other  users  not
   in the file's group, with the same values.

所以,如果你想让程序可以被所有用户执行,那么你'chmod 111 file'。但是,对于大多数事情你也需要读权限,所以'chmod 555 file'。另外,我让这些比特变得相同的原因是因为你说你希望“每个人”能够做到这一点。

答案 1 :(得分:-1)

您必须为所有用户设置suid标志。

sudo chmod ogu+sxr /usr/sbing/airodump-ng