// Обновлено 8 февраля - Краткие проблемы:
- Как отличить каталоги от файлов?
- Как сделать маскировку на Nautilus копировать / вставить?
- Как установить umask для SSHFS?
НАША СИТУАЦИЯ
Несколько человек из нашей компании входят на сервер и загружают файлы. Все они должны иметь возможность загружать и перезаписывать одни и те же файлы. У них разные имена пользователей, но все они входят в одну группу. Однако это интернет-сервер, поэтому «другие» пользователи должны иметь (в общем) доступ только для чтения. Так что я хочу иметь эти стандартные разрешения:
файлов: 664
каталогов: 771
Моя цель заключается в том, чтобы все пользователи не беспокоились о разрешениях. Сервер должен быть настроен таким образом, чтобы эти разрешения применялись ко всем файлам и каталогам, вновь созданным, скопированным или перезаписанным. Только когда нам нужны специальные разрешения, мы можем изменить это вручную.
Мы загружаем файлы на сервер с помощью SFTP-входа в Nautilus, монтируя сервер с помощью sshfs и обращаясь к нему в Nautilus, как если бы это была локальная папка, и с помощью SCP-ing в командной строке. Это в основном охватывает нашу ситуацию и то, что мы стремимся сделать.
Теперь я прочитал много вещей о прекрасной функциональности Umask. Из того, что я понимаю, umask (вместе с PAM) должен позволять мне делать именно то, что я хочу: устанавливать стандартные разрешения для новых файлов и каталогов. Однако, после многих часов чтения и проб и ошибок, я все еще не понимаю, как это работает. Я получаю много неожиданных результатов. Я действительно хотел бы получить твердое понимание Umask и многие вопросы без ответа. Я опубликую эти вопросы ниже, вместе с моими выводами и объяснением моих испытаний, которые привели к этим вопросам. Учитывая, что многие вещи идут не так, я думаю, что я делаю несколько вещей неправильно. Итак, поэтому есть много вопросов.
ПРИМЕЧАНИЕ: я использую Ubuntu 9.10 и поэтому не могу изменить sshd_config, чтобы установить маску для SFTP-сервера. Установленный SSH OpenSSH_5.1p1 Debian-6ubuntu2 <требуется OpenSSH 5.4p1. Итак, пошли вопросы.
1. НУЖНО ЛИ ПЕРЕЗАПУСТИТЬ, ЧТОБЫ ИЗМЕНЕНИЯ PAM ВЗЯЛИ?
Давайте начнем с этого. Было задействовано так много файлов, и я не смог выяснить, что влияет и что не влияет на вещи, также потому, что я не знал, нужно ли мне перезапускать всю систему, чтобы изменения PAM вступили в силу. Я сделал это, не увидев ожидаемых результатов, но действительно ли это необходимо? Или я могу просто выйти с сервера и снова войти, и должны ли новые политики PAM быть эффективными? Или есть какая-нибудь программа PAM для перезагрузки?
2. Есть ли один файл для изменения, который влияет на всех пользователей для всех сессий?
В итоге я изменил МНОГИЕ файлы, так как я читал МНОГИЕ разные вещи. В итоге я установил umask в следующих файлах:
~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002
Я хочу, чтобы это изменение применялось ко всем пользователям, поэтому лучше всего было бы применить общесистемные изменения. Это может быть достигнуто?
3. ПОСЛЕ ВСЕГО, ЭТО ЕСТЬ UMASK, РАБОТАЕТ?
Поэтому после замены umask на 0002 во всех возможных местах я запускаю тесты.
------------ SCP -----------
ТЕСТ 1:
scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile 100% 4 0.0KB/s 00:00
Давайте проверим разрешения:
user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)
ОБНОВЛЕНИЕ: исправлено ТОЛЬКО установкой umask в pam.d / common-session (см. Комментарии)
--------- SSH ------------
ТЕСТ 2:
ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)
-------- SFTP -----------
Наутилус: sftp: // сервер / дом /
Скопируйте и вставьте новый файл с клиента на сервер (777 на клиенте)
ТЕСТ 3:
user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)
Создайте новый файл через Nautilus. Проверьте права доступа к файлам в терминале:
ТЕСТ 4:
user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders 0 2011-02-05 18:06 newfile (600)
Я имею в виду ... ЧТО только что здесь произошло ?! Мы должны получить 644 каждый раз. Вместо этого я получаю 711, 777, 600, а затем один раз 644. И 644 достигается только при создании нового пустого файла через SSH, что является наименее вероятным сценарием.
Поэтому я спрашиваю, работает ли umask / pam в конце концов?
ОБНОВЛЕНИЕ: исправлен тест 4 ТОЛЬКО установкой umask в pam.d / common-session (см. Комментарии)
4. ТАК ЧТО ОЗНАЧАЕТ UMASK SSHFS?
Иногда мы монтируем сервер локально, используя sshfs. Очень полезный. Но опять же, у нас есть проблемы с разрешениями.
Вот как мы монтируем:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
ПРИМЕЧАНИЕ: мы используем umask = 113, потому что, очевидно, sshfs начинается с 777 вместо 666, поэтому с 113 мы получаем 664, что является желаемым разрешением файла.
Но сейчас происходит то, что мы видим все файлы и каталоги, как будто они 664. Мы просматриваем в Nautilus каталог / mnt и:
- Щелкните правой кнопкой мыши -> Новый файл (новый файл) --- ТЕСТ 5
- Щелкните правой кнопкой мыши -> Новая папка (новая папка) --- ТЕСТ 6
- Скопируйте и вставьте файл 777 с нашего локального клиента --- ТЕСТ 7
Итак, давайте проверим в командной строке:
user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007 3 Feb 5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007 0 Feb 5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb 5 18:15 newfolder (664)
Но давайте посмотрим на эту же папку на стороне сервера:
user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders 0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)
Какая?! Реальные права доступа к файлам сильно отличаются от того, что мы видим в Nautilus. Так что, этот umask на sshfs просто создает «фильтр», который показывает нереальные права доступа к файлу? И я попытался открыть файл от другого пользователя, но той же группы, которая имела реальные 600 разрешений, но 644 «поддельные» разрешения, и я все еще не мог прочитать это, так что же хорошего в этом фильтре ??
5. UMASK ВСЕ О ФАЙЛАХ. НО ЧТО О ДИРЕКТОРАХ?
Из моих тестов я вижу, что применяемый umask также как-то влияет на права доступа к каталогу. Однако я хочу, чтобы мои файлы были 664 (002), а мои каталоги - 771 (006). Так можно ли использовать разные маски для каталогов?
6. Возможно, UMASK / PAM ДЕЙСТВИТЕЛЬНО ОХЛАЖДАЮТСЯ, НО UBUNTU - ПРОСТО БАГГИ?
С одной стороны, я читал темы людей, которые имели успех с PAM / UMASK и Ubuntu. С другой стороны, я нашел много старых и новых ошибок, связанных с umask / PAM / fuse в Ubuntu:
- https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/241198
- https://bugs.launchpad.net/ubuntu/+source/fuse/+bug/239792
- https://bugs.launchpad.net/ubuntu/+source/pam/+bug/253096
- https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/549172
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314796
Поэтому я не знаю, во что больше верить. Должен ли я просто сдаться? Решит ли ACL все мои проблемы? Или у меня опять проблемы с использованием Ubuntu?
Одно предостережение о резервном копировании с использованием tar. Дистрибутивы Red Hat / Centos поддерживают acls в программе tar, но Ubuntu не поддерживает acls при резервном копировании. Это означает, что при создании резервной копии все acls будут потеряны.
Я очень готов перейти на Ubuntu 10.04, если это тоже решит мои проблемы, но сначала я хочу понять, что происходит.
cp -p
иscp -p
было бы.cp -p
,scp -p
И копирование с помощью Nautilus - прежнему будет пытаться сделать разрешения на копии, так же , как файл копируется.Это не связано с PAM / umask, но может быть полезно для вас.
Если вы setgid каталога, то все файлы и каталоги , созданные в нем, автоматически присваиваются своей группой.
источник
Пожалуйста, прочтите также это решение: Как настроить структуру разрешений для нескольких пользователей, редактирующих несколько сайтов в / var / www в Ubuntu 9.10?
источник
ACL должны нормально работать для вас.
Установите ACL по умолчанию для всех папок группы, которые затем будут наследоваться всеми будущими файлами и каталогами.
Что-то вроде
setfacl -m d:g:uploaders:rwx
должно работать.Чтобы исправить существующие разрешения:
Похоже, что если при копировании файла установлено «preserve», ACL по умолчанию не работает. В этом случае я могу только предложить запустить команды поиска в cron или отслеживать файловую систему на предмет изменений.
источник