如何在 sudoers 文件中禁用 mysql 命令?

Car*_*ohr 7 mysql security sudo 12.04 visudo

如何禁用/usr/bin/mysqlsudoers 文件中的命令?我试过这样使用它:

%tailonly ALL=!/usr/bin/mysql
Run Code Online (Sandbox Code Playgroud)

但是,当我访问“tailonly”组的用户“tailonly”时,此命令仍处于启用状态。

简而言之,我只想要“tailonly”用户访问权限tail -f /usr/app/*.log

这个有可能?

编辑:

使用此配置,用户 'tailonly' 仍然可以使用 'mysql' 命令访问 mysql 终端:

$: sudo su

$: visudo

Cmnd_Alias MYSQL = /usr/bin/mysql
Cmnd_Alias TAIL=/usr/bin/tail -f /jacad/jacad3/logs/*.log

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
%swa    ALL=/etc/init.d/jacad3 stop
%swa    ALL=/etc/init.d/jacad3 start
%swa    ALL=/etc/init.d/jacad3 restart
%swa    ALL=sudoedit /jacad/jacad3/bin/jacad_start.sh

%tailonly ALL=ALL,!MYSQL
Run Code Online (Sandbox Code Playgroud)

Pet*_*ins 4

我认为 sudo 可能不是适合这项工作的工具。

如果您希望某个用户访问日志文件,您可以使用普通的 unix 文件权限和/或扩展属性。要授予用户跟踪文件的权限,他们需要读取权限。

要使用扩展属性来执行此操作,请尝试:

$ setfacl -m u:tailonly:r /usr/app/file
Run Code Online (Sandbox Code Playgroud)

如果您希望用户读取目录中的所有文件(我认为您想要实现这一目标),则需要为该用户、该目录设置默认 ACL。例如:

$ setfacl -d -m user:tailonly:r /usr/app
Run Code Online (Sandbox Code Playgroud)

这会将新文件的权限设置为 tailonly 用户可读。

有一些很好的指南和类似的问题可能会有所帮助:

https://serverfault.com/questions/2736/how-does-one-get-setfacl-to-set-acl-permissions-recursively-on-ubuntu-9-04-serve

http://www.gnutoolbox.com/acls-setfacl/