如何以root身份在bash中运行命令?

时间:2013-07-17 01:58:40

标签: linux bash

我在/root/prepare_server.sh

中为我的开发人员制作了一个脚本
#!/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/

整个dirs只归我所有: 经理:phpdev

通常当我的开发人员使用git更新所有文件时,权限将更改为developer:developer,

我的用户(开发人员:开发人员)如何运行我的脚本?

3 个答案:

答案 0 :(得分:0)

在计算机上安装软件包sudo,允许您授予非root用户以root身份运行特定命令的权限。

然后,授予开发人员运行该特定脚本的权限。

答案 1 :(得分:0)

sudo

根据自己的喜好设置你的sudoers文件。您可以对其进行设置,使其只能运行某些命令,并且可以在没有密码的情况下执行此操作。

答案 2 :(得分:0)

使用sudo,您可以在/etc/sudoers文件中编写规则,例如:

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

man sudoers了解更多细节。

或者您可以使用SUID以root身份运行该脚本:

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

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