Каждый главный дистрибутив ОС предоставляет Apache, предварительно сконфигурированный немного по-другому. Вам решать, как Вы хотите, чтобы Ваша безопасность была настроена.
При использовании предоставленного пакета Apache поставщика попытайтесь смотреть на основной .conf файл (в соответствии с Ubuntu, которой это называют apache2.conf
). Ищите User
и Group
директивы. Любое изменение User
и Group
пользователю/группе, что Вы хотите владеть файлами, или chown -R <apache user>:<apache group> /var/www
.
Если Вы надеетесь позволять многочисленным пользователям редактировать файлы в /var/www
затем необходимо будет, вероятно, стать творческими. Вы могли:
/var/www
установите их группу на группу, в которой находятся все Ваши редактирующие пользователи.sudo
www пользователю для редактирования файлов./var/www
разрешать пользователям редактировать определенные файлы.alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'
Короткий ответ - ты не можешь. Sudo su sudo su
запускает новую оболочку, которая должна выйти до того, как попадет на команду cd
.
Для меня сработала комбинация sudo
и screen
:
sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'
Эта команда сначала переключает на бродячий пользователь
. Затем, когда vagrant
меняет каталог на / vagrant
и выполняет npm install
.
Один из вариантов - отредактировать ~ / .bashrc
целевого пользователя и добавить туда cd
:
cd /a/path/that/only/userYYY/has/access
Я знаю, что это немного отличается от первоначального вопроса, но идея состоит в том, чтобы запустить команду от имени другого пользователя, не вводя пароль, когда политика запрещает sudo su <user> -c
.
sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"