У меня есть скрипт, который изменяет права доступа к файлам и группам. Но это не приносит эффекта, пока я не закрою сессию и не открою новую.
Инструкции, где изменяются разрешения:
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
Это должно помочь:
Я пытался использовать login username
после изменения привилегий, но это абсолютно ничего не делает.
Как я могу обновить привилегии без выхода из скрипта?
Я думаю лучшее, которое можно сделать, должен выполнить команды, необходимо выполнить использование 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 "$@"
}