3

В настоящее время у меня есть базовый сервер 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

3 ответа3

3

Coda на самом деле загружает локальные файлы. Если вы не используете хаки, такие как неподдерживаемый / устаревший http://sftpfilecontrol.sourceforge.net, файлы будут иметь любые локальные разрешения. Поскольку OSX имеет umask 022, файлы, созданные в OSX, не доступны для записи в группе, поэтому 644. Кода радостно загружает это. Как вы узнали, Coda может принудительно устанавливать определенные разрешения, но она недостаточно детализирована, чтобы указывать, что это следует делать только для новых файлов, поэтому при сохранении существующих файлов, которые не принадлежат пользователю (что является самый распространенный случай). Единственный способ, с помощью которого я смог это сделать, - это сменить пользователя на OSX. Создайте файл /etc/launchd-user.conf и поместите туда:

umask 002

Затем перезагрузите компьютер. После этого Coda создает файлы, которые являются 664 локально, и загружает их. Файлы теперь доступны для групповой записи, и в настройках Coda нет необходимости устанавливать параметр «Права доступа при загрузке» .

Смотрите также http://support.apple.com/kb/HT2202.

1

На панели настроек Coda, на вкладке "Правила", вы можете установить необходимые разрешения для файлов, загружаемых через ftp/sftp. По умолчанию это 644; похоже, что просто отметка поля "Запись" в строке "Группа" может решить проблему. Конечно, каждый студент должен будет сделать это в своей собственной копии Coda.

1

Проблема не в правах доступа к файлу, а в группах, к которым принадлежат ваши ученики. На компьютере с веб-сервером, если вы сделаете первичную группу каждого учащегося такой же, как группа веб-сервера (в системах Linux обычно www-data или apache) и задаете разрешения для файла по умолчанию 660 на панели настроек Coda, все должно быть хорошо ,

# usermod -g apache studentUID

или же

# usermod -g www-data studentUID

в зависимости от того, какой тип Linux вы используете на веб-сервере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .