we're running a server for a german bank. Of course we want to keep our services secure. A partner of us has to install a web based service (php, python and sql) on this machine. This partner will also be in charge in support and maintenance of this software.
So he needs access to the server, sftp isn't enough. There may be changes in the web server php.ini necessary from time to time. The web server needs some restarting, etc. Files must be edited and so on.
sudo might be a fine solution, but sudo is way too mighty in it's defaults. I know that you can allow and disallow certain commands only.
sudo su must be disabled of course, also /etc/sudoers must be write protected, even for root. This is no problem if you use chattr +i /etc/sudoers.
But i think enable all commands and disallow some, line su and all known shells ;), isn't a good way to go. I would like to disallow all commands by default but allow some of them:
* restarting of web server
* editing of php.ini
* file transfer (ftp-ssl, sftp, http, etc.)
* chmod/chown (some files only)
* git, svn, rcs
* some editors
* apt-get install but not remove
When i did some tests with sudoers i wasn't able to disallow certain commands with parameters like:
The only way was to disable passwd at all, which isn't nice. Is there another way to allow some parameters for certain commands?