我有以下脚本:
[root@localhost:~]# cat /mnt/start_discovery
#!/bin/sh
InterfaceNumber=$((65471 - $1))
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
和 3 个允许执行命令的用户:root、ste 和 www。用户 ste 和 www 使用 sudo 执行命令,root 工作没有 sudo。
[root@localhost:~]# cat /etc/sudoers
root ALL=(ALL) ALL
ste ALL=(ALL) ALL
www ALL=/mnt/start_discovery *,\
sh -xv *
当我从用户 www 运行命令时 - 一切都很好:
[www@localhost:~]$ sudo sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ mysql --user= --execute=insert into dc.discovery_commands(device, job_ttd) select 65471, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);
但对于用户 ste:
[ste@localhost:~]$ sudo sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ERROR 1045 (28000): Access denied for user ' '@'localhost' (using password: YES)
相同,对于用户 root:
[root@localhost:~]# sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ERROR 1045 (28000): Access denied for user ' '@'localhost' (using password: YES)
对于用户 root 和 ste,我在文件 ~/.my.cnf 中有 mysql 的密码,对于用户 www - 没有任何访问 mysql 的权限。创建 mysql 的用户:
[root@localhost:~]# mysql -e "select user,host,password from mysql.user;"
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *48A8ACDAF5434778D6B5D0254833B2AEC555514A |
| ste | localhost | *425AF4AF33C4FB42AC52A0A6630DEE61AB94A67A |
| | localhost | |
+------+-----------+-------------------------------------------+
任何想法为什么会这样?以及如何更好地使所有用户都有可能执行此脚本(脚本具有权限 750 并且需要 sudo)?