在CentOS上,我想授予apache
用户在它不拥有的主目录上"ant release"的权限。我该怎么做?我使用的ant release
是android SDK的一部分-我有一个目录/home/myuser/android_project/
,ant relase
从那里运行得很好,但我想给apache
运行它所需的权限,这样我就可以作为运行
<?php shell_exec('/home/myuser/android_project/ant release') ?>.
抓住
还有一个问题,因为我签署了ant release
,我希望在一个文件中处理密码,也许php可以神奇地"签署"ant release
。
现在。
注:对Mr Tinker
:小心——我知道这可能会与论坛主题警察发生冲突,但在我深思熟虑后认为这是unix issue
。我知道PHP是如何执行shell_exec的,我不需要编程帮助。我知道如何手动运行ant release
,所以我不需要安装帮助:我想在linux(CentOS服务器)中将这两个完全不同的手动"东西"缝合在一起,所以我相信这100%是unix问题
如前所述,您需要授予apache用户执行/home/myuser/android_project/ant
文件的权限。
tl;dr:运行以下命令(请注意,这可能不是世界上最安全的东西):
chmod 777 /home/myuser/android_project/ant
如果您对这可能解决问题的原因感兴趣,请继续阅读下面的内容。
首先,你需要获得更多的信息。运行以下命令:
ls -l /home/myuser/android_project/ant
ls -l
命令将为您提供指定文件的读取、写入和执行权限,以及所有权信息。第一列包含权限信息。第3列表示拥有用户,第4列表示拥有组。
例如:
$ ls -l /etc/passwd
-rw-r--r--. 1 root root 2177 Aug 26 21:23 /etc/passwd
^^^
|----------- All Users & Groups
^^^
|-------------- Specified Group Owner
^^^
|------------------ Specified User Owner
这可以解释为用户root和组root拥有/etc/passwd
文件。权限以3个rwx
字符为一组读取。第一组用于拥有用户,第二组用于拥有组,第三组用于系统中的其他所有人。本例中的权限意味着根用户可以读取和写入文件,根组可以读取,其他所有人都可以读取。
现在,每组权限可以表示为一个八进制数字:
--- == 0
--x == 1
-w- == 2
-wx == 3
r-- == 4
r-x == 5
rw- == 6
rwx == 7
您现在有足够的信息来理解上面的chmod 777
命令工作的原因。基本上,您已经授予系统中每个人读取、写入和执行ant文件的权限。
理想情况下,您只需要提供允许apache执行该文件所需的最低权限,我将把这部分留给读者练习。