В настоящее время у меня есть базовый сервер Ubuntu, на котором работает веб-сайт. Веб-сайт предназначен для нескольких студентов, изучающих HTML/PHP, и каждый студент имеет свою учетную запись с символической ссылкой на общую папку на веб-сайте. Поскольку студенты работают на веб-сайте вместе, каждый пользователь должен иметь возможность изменять все файлы (например, index.html). Поэтому я создал группу Webdev, содержащую всех студентов с установленным по умолчанию значением umask 0002 в их .bashrc (это позволяет вновь создаваемым файлам иметь 774). Общая папка принадлежит группе Webdev с помощью chmod g+s, так что новые файлы / папки также принадлежат группе Webdev.
Проблема заключается в том, что учащиеся используют IDE (Coda 2), и когда они создают новый файл или папку с помощью IDE, файл имеет разрешения 644 на сервере (не для записи в группе). Однако, когда я создаю новый файл через соединение с Cyberduck (клиент SFTP), права доступа к файлу равны 664 (как и должно быть). Так что я не понимаю, почему Coda была бы другой.
Однако после некоторых проб и ошибок я считаю, что Coda сначала создает файл на локальном диске, а затем загружает этот файл на сервер. На Mac по умолчанию вновь создан файл 644. Когда клиент загружает файл, который уже 644, он остается 644 на стороне сервера (в этой ситуации umask отчасти бесполезен). Я также пытался создать разрешения ACL для этой папки, но загруженный файл с моего Mac через SCP не получает разрешения ACL по умолчанию.
В Coda есть возможность изменить права доступа к файлу при передаче. Однако эта опция, кажется, применяет chmod ко всем загружаемым или сохраненным файлам. Когда один из студентов изменяет файл, созданный кем-то другим, когда он пытается загрузить или сохранить его, Coda также пытается выполнить chmod, но не удается, потому что этот пользователь не является владельцем файла.
Мое текущее решение использует bindfs ... Я монтирую общую веб-папку, и bindfs устанавливает права и группу владельцев вновь создаваемых файлов. Однако bindfs кажется немного медленным, и я уверен, что есть лучшее решение.
Даже если студенты отказались от Coda 2 и использовали Mac vim с scp, вновь созданные файлы на сервере вели бы себя так же (644), что по умолчанию на mac.
Другие опции...
1) Либо я учу студентов использовать (ssh/chmod) вместе со своей IDE для изменения собственных прав доступа к файлам при загрузке.
2) Я установил на всех компьютерах Маки umask по умолчанию 0002, который бы загружал файлы с нужными разрешениями.
3) Напишите скрипт кукурузы для исправления прав доступа к файлам каждые 5-15 минут ... (Этот вариант, я думаю, является наихудшим, если студенты работают вместе).
Можно ли как-нибудь сделать так, чтобы все файлы, загружаемые через SCP, имели разрешения по умолчанию для файлов 664, даже если загруженный файл имеет более низкие разрешения? (После нескольких часов поиска я не думаю, что это возможно). Я полагаю, что кукурузный скрипт - мой лучший вариант для начинающих пользователей. Как веб-разработчики работают вместе на больших сайтах?
примерно так: https://serverfault.com/questions/283492/how-to-specify-file-permission-when-putting-a-file-using-openssh-sftp-command
Также похоже: https://serverfault.com/questions/395418/managing-linux-directory-permissions-sftp