Как обновить привилегии на скрипт?

У меня есть скрипт, который изменяет права доступа к файлам и группам. Но это не приносит эффекта, пока я не закрою сессию и не открою новую.

Инструкции, где изменяются разрешения:

sudo groupadd --system webapps
sudo useradd --system --gid webapps --home /home/lucio/server/webapps/hello_django hello
sudo chown -R hello:webapps .
sudo chmod -R g+w .
sudo usermod -a -G webapps `whoami`

Инструкция, где я получаю ошибку:

cd /home/lucio/server/webapps/
cp assets/gunicorn_start.bash.template hello_django/bin/gunicorn_start.bash

Последняя строка дает мне следующую ошибку:

cp: cannot create regular file 'hello_django/bin/gunicorn_start.bash': Permission denied

Это должно помочь:

screenshoot

Я пытался использовать login username после изменения привилегий, но это абсолютно ничего не делает.

Как я могу обновить привилегии без выхода из скрипта?

2
задан 20 May 2014 в 03:57

1 ответ

Я думаю лучшее, которое можно сделать, должен выполнить команды, необходимо выполнить использование sg.

DESCRIPTION
   The sg command works similar to newgrp but accepts a command. The
   command will be executed with the /bin/sh shell. With most shells you
   may run sg from, you need to enclose multi-word commands in quotes.
   Another difference between newgrp and sg is that some shells treat
   newgrp specially, replacing themselves with a new instance of a shell
   that newgrp creates. This doesn't happen with sg, so upon exit from a
   sg command you are returned to your previous group ID.

Так, после того, как Вы создадите группу и добавите себя к ней, Вы будете в состоянии к командам выполнения как член той группы с sg groupname command. Так, например, это будет работать:

sudo groupadd --system webapps
sudo useradd --system --gid webapps --home /home/lucio/server/webapps/hello_django hello
sudo chown -R hello:webapps .
sudo chmod -R g+w .
sudo usermod -a -G webapps $(whoami)

## From now on, run all commands through sg
sg webapps "mkdir foorbar"

, Так как это будет болью для записи, я поместил бы ее в функцию:

run_as_webapps() sg webapps "$@"

Затем назовите любые команды, которые необходимо назвать использованием, которые функционируют

run_as_webapps mkdir foobar

И конец дня, хотя, могло бы быть легче просто выполнить целый сценарий как корень вместо этого. Или это или имеет два сценария, один для установки групп и другого, чтобы сделать все остальное. Просто выйдите из системы и войдите в прежде, чем выполнить второй.

<час>

спецификация POSIX ясно указывает, что функции должны быть определены таким образом:

foo () command

По причинам я не понимаю, OP испытал затруднения из-за этого и вместо этого должен был использовать

function run_as_webapps(){
    sg webapps "$@"
}
0
ответ дан 20 May 2014 в 03:57

Другие вопросы по тегам:

Похожие вопросы: