标签归档:权限

用PHP调用Linux命令无权限的问题解决(visudo)

业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序

系统:CentOS 6.3

apache是php的执行用户

用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd

php代码如下

测试结果为没有权限
Array ( [0] => sudo: no tty present and no askpass program specified )

解决步骤:

1)注释以下行
#Defaults    requiretty

2)在文件末尾加入以下

最后测试结果
Array ( [0] => Warning: memory is too small: 1044725760 [1] => test configure is ok )

服务器网站根目录权限问题小议

CentOS上搭建的lamp环境经常碰到上传到htdocs目录权限不足的问题,
每回像这种temp目录,runtime目录都得给个权限……
chmod 777 -R temp
chmod 777 -R runtime
烦……
用setfacl命令就可以轻松搞定,下面介绍一下setfacl命令和chmod命令的区别:
setfacl命令可以用来细分linux下的文件权限。
chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。 比较常用的用法如下:
setfacl –m u:apache:rwx file 设置apache用户对file文件的rwx权限
setfacl –m g:market:rwx file 设置market用户组对file文件的rwx权限
setfacl –x g:market file 删除market组对file文件的所有权限
getfacl file 查看file文件的权限

现在进入主题,网站根目录权限的问题刚装好的环境apache的运行者为daemon用户组也是daemon
首先我们把apache所属用户给apache
groupadd mysql
useradd -g apache apache

当然在装的过程中apache用户已经存在了
vi /etc/httpd/httpd.conf

user daemon
group daemon
改成
user apache
group apache
然后敲命令
setfacl -m u:apache:rwx -R /usr/local/apache2/htdocs
setfacl -m d:u:apache:rwx -R /usr/local/apache2/htdocs
现在web服务器的运行就交给apache用户了,并且它对/usr/local/apache2/htdocs下所文件目录拥有权限
现在查看文件看和原来比有什么变化:
[zhengzs@localhost htdocs]$ ll

总计 64
-rwxr-xr-x+ 1 zhengzs root 2205 2005-12-15 apache_pb22_ani.gif
-rwxr-xr-x+ 1 zhengzs root 2410 2005-12-15 apache_pb22.gif
-rwxr-xr-x+ 1 zhengzs root 1502 2005-12-15 apache_pb22.png
-rwxr-xr-x+ 1 zhengzs root 2326 2004-11-21 apache_pb.gif
-rwxr-xr-x+ 1 zhengzs root 1385 2004-11-21 apache_pb.png
-rwxr-xr-x+ 1 zhengzs root 44 2004-11-21 index.html.bak
-rwxr-xr-x+ 1 zhengzs root 17 02-01 23:18 phpinfo.php
drwxr-xr-x+ 19 zhengzs root 4096 02-02 00:25 ThinkPHP312
权限后面多了一个‘+’(加号),说明acl已经生效了。
* 用acl来让apache用户对/usr/local/apache2/htdocs有所有权限
这样上传的文件就不用繁琐去chmod给权限,上传到根目录的文件网站都有权利运行,维护起来相当省事

MySQL GRANT ALL PRIVILEGES 方法允许远程登录

GRANT ALL PRIVILEGES

1. 授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

以下是Sql代码

注意:root@localhost和密码mysql用的是引号

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

Sql代码

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码
Sql代码

注意授权后必须FLUSH PRIVILEGES;否则无法立即生效。

例子:授权用户www对数据库onethink有select,delete,update,insert权限,登录密码为admin123

 

2. 改表法。