使bash脚本在不使用ssh的情况下可用

使bash脚本在不使用ssh的情况下可用,bash,shell,sh,sudo,Bash,Shell,Sh,Sudo,我有一个简单的bash脚本(myscript.sh) 因此,基本上脚本从db1转储3个表并将它们插入db2,将所有图片从mydomain.com复制到mydomain.de,并将所有复制图片的用户从mydomain.com更改为mydomain.de 现在,我想让我的同事可以使用这个脚本(单击一下),而不让他们通过ssh访问我们的服务器 我想到的第一件事是通过html/php提供这个脚本。但这里的问题是,为了更改复制文件的用户/所有者,脚本需要以root用户身份运行。我想从mydomain.co

我有一个简单的bash脚本(myscript.sh)

因此,基本上脚本从db1转储3个表并将它们插入db2,将所有图片从mydomain.com复制到mydomain.de,并将所有复制图片的用户从mydomain.com更改为mydomain.de

现在,我想让我的同事可以使用这个脚本(单击一下),而不让他们通过ssh访问我们的服务器

我想到的第一件事是通过html/php提供这个脚本。但这里的问题是,为了更改复制文件的用户/所有者,脚本需要以root用户身份运行。我想从mydomain.com用户处运行脚本,但思想开放。而且似乎没有安全的解决方案从php页面以root用户身份运行此脚本

我可以给mydomain.com用户更改文件所有者的权限吗?或者您建议如何使此脚本在没有ssh访问的情况下可用


将来还会有其他文件所有者使用的脚本,我的同事需要很容易地使用这些脚本。所以我在想,这里的最佳解决方案是什么…

chown
实际上是一个纯根操作。更改所有权的常用方法是允许目标用户(
mydomain.de
)读取文件,然后以该用户的身份复制文件。这不需要任何根访问权限即可执行

您可以通过编辑为一个特定用户授予访问权限,使其可以作为另一个命名用户运行一个特定脚本

例如,对于两个用户“bob”和“frank”,bob可以运行“/home/bob/special_script.sh”,只要frank有权访问脚本,并且这一行被添加到/etc/sudoers中:

bob ALL=(frank) NOPASSWD: /home/bob/special_script.sh
鲍勃会跑:

sudo -u frank /home/bob/special_script.sh


我建议您使用
--chown
创建一个包含rsync命令的脚本,并授予sudo访问权限,以
mydomain.de
的形式运行它,而不是使用rsync,允许
mydomain.de
读取
/var/www/vhosts/mydomain.com/httpdocs/pictures/master/product/1/

我认为这不属于serverfault.com,因为一个用户已经标记,因为这不是一个真正的专业服务器管理问题,而是一个unix(软件)设计问题。有争议的是,它属于一种非常解耦(而且非常难看)的方法,您可以在服务器上运行cron作业,检查文件是否存在,并在文件存在时进行备份。将文件放在共享文件系统中,或放在Dropbox中,或客户机和服务器可以看到的任何位置。如果服务器检测到该文件,它将进行备份并删除该文件。好的,您将使用访问控制列表授予某个用户对某个目录的访问权限吗?
sudo -u frank /home/bob/special_script.sh