2013-07-17 146 views
-3

我犯了一個劇本,我的開發人員內部/root/prepare_server.sh如何以root身份在bash中運行命令?

#!/bin/bash 

FILES="/var/www/html/crm/cicrm/cache/ 
/var/www/html/crm/cicrm/data/ 
/var/www/html/crm/cicrm/logs/ 
/var/www/html/crmtest/cicrm/cache/ 
/var/www/html/crmtest/cicrm/data/ 
/var/www/html/crmtest/cicrm/logs/" 

for f in $FILES 
do 
echo "processing $f" 1>&2 
if [[ ! -e $f ]]; then 
    mkdir $dir 
elif [[ ! -d $f ]]; then 
    echo "$f already exists but is not a directory" 1>&2 
fi 
done 

chown -R manager:phpdev /var/www/html/crm/ 
chown -R manager:phpdev /var/www/html/crmtest/ 
chown -R manager:phpdev /var/redmine/crmGit/ 
chown -R manager:phpdev /var/redmine/owncloudGit/ 
chmod -R 770 /var/redmine/crmGit/ 
chmod -R 770 /var/redmine/owncloudGit/ 
chmod -R 770 /var/www/html/crm/ 
chmod -R 777 /var/www/html/crm/cicrm/cache/ 
chmod -R 777 /var/www/html/crm/cicrm/data/ 
chmod -R 777 /var/www/html/crm/cicrm/logs/ 
chmod -R 770 /var/www/html/crmtest/ 
chmod -R 777 /var/www/html/crmtest/cicrm/cache/ 
chmod -R 777 /var/www/html/crmtest/cicrm/data/ 
chmod -R 777 /var/www/html/crmtest/cicrm/logs/ 

,整個迪爾斯只能由我所擁有: 經理:phpdev

通常當我更新的開發人員使用Git的所有文件,該權限正在改變爲開發人員:開發人員,

我的用戶(開發人員:開發人員)如何運行我的腳本?

+0

'男人sudo' - 你可以給開發者運行一個腳本的能力。警告:腳本文件是非常不安全的 - 如果有人想要做一些破壞,他們可以。 –

回答

0

使用sudo,您可以在/etc/sudoers文件編寫規則,比如像:

# format: user host = (run as) NOPASSWD: path 
developer ALL=(root) NOPASSWD: /root/prepare_server.sh 

man sudoers瞭解更多詳情。

或者您可以使用SUID來運行腳本根:

chown root /root/prepare_server.sh 
chmod u+s /root/prepare_server.sh 

https://en.wikipedia.org/wiki/Setuid

+0

像我想要的那樣工作得很好,我總是在使用sudo之前得到錯誤,因爲困難在那裏抽樣。 – kreamik

0

在機器上安裝軟件包sudo,該軟件包允許您授予非root用戶以root身份運行特定命令的權限。

然後,授予您的開發人員運行該特定腳本的權限。

+0

可以sudo只給chown和chmod而不是關閉所有文件夾的文件夾,我的意思是開發人員只能chown和chmod只爲/ var/www/html但不能在我的/ home/manager中執行? – kreamik

+0

這種類型的控制在SELinux的範圍內比'sudo'多。但是,您可以使用已經編寫好的'prepare_server'腳本,將它放在適當的位置(想到'/ usr/local/sbin'),並授予開發人員訪問權限以運行*該腳本和僅具有root權限的腳本*使用'sudo'。 –

+0

當我給開發者sudo chmod和sudo chown作爲根的功能時,他們只能在特定文件夾中使用它並阻止它到其他文件夾嗎? – kreamik

0

sudo

設置您的sudoers文件根據自己的喜好。您可以對其進行設置,以便它們只能運行某些命令,並且無需密碼即可完成。

+0

可以sudo只給chown和chmod而不是關閉所有文件夾的文件夾,我的意思是開發人員只能chown和chmod只能爲/ var/www/html但不能在我的/ home/manager中執行? – kreamik

+0

@ kreamik Sudo本身無法做到這一點,但一個好的Unix管理員可以安排任何數量的解決方案。如果是linux,那麼selinux策略可能就足夠了。如果這是爲了挑選一個訂單,你可能會爲應用設置一個chroot監獄。這可能是一個更好的問題[服務器故障](http://serverfault.com/) –

+1

@ kreamik老實說,如果你擔心他們會用他們的根權力做什麼,那麼給他們運行*任何東西*作爲根是一個壞主意。 –

相關問題