// Оновлено 8 лютого - стислі питання:
- Як umask каталоги відрізняються від файлів?
- Як виконувати копіювання / вставлення Nautilus на umask?
- Як встановити umask для SSHFS?
НАША СИТУАЦІЯ
Кілька людей з нашої компанії входять на сервер і завантажують файли. Всі вони повинні мати можливість завантажувати та перезаписувати одні і ті ж файли. Вони мають різні імена користувачів, але всі вони є однією і тією ж групою. Однак це інтернет-сервер, тому "інші" користувачі повинні мати (загалом) просто доступ лише для читання. Тому я хочу мати такі стандартні дозволи:
файли: 664
каталоги: 771
Моя мета - всі користувачі не повинні турбуватися про дозволи. Сервер повинен бути налаштований таким чином, що ці дозволи стосуються всіх файлів і каталогів, щойно створених, скопійованих або перезаписаних. Лише тоді, коли нам потрібні спеціальні дозволи, ми це вручну змінимо.
Ми завантажуємо файли на сервер SFTP-ing в Nautilus, монтуючи сервер за допомогою sshfs і отримуючи доступ до нього в Nautilus, як якщо б це була локальна папка, і SCP-ing в командному рядку. Це в основному охоплює нашу ситуацію і те, що ми прагнемо робити.
Тепер я прочитав багато речей про прекрасну функціональність umask. З того, що я розумію, umask (разом з PAM) повинен дозволяти мені робити саме те, що я хочу: встановити стандартні дозволи для нових файлів і каталогів. Однак після багатьох годин читання та спроб і помилок я все одно не змушую це працювати. Я отримую багато несподіваних результатів. Мені дуже подобається зрозуміти розум і багато питань без відповіді. Ці питання я опублікую нижче, разом зі своїми висновками та поясненнями моїх випробувань, які призвели до цих питань. Зважаючи на те, що багато речей здаються не так, я думаю, що я роблю кілька речей неправильно. Так що виникає багато питань.
ПРИМІТКА: Я використовую Ubuntu 9.10 і тому не можу змінити sshd_config для встановлення umask для SFTP-сервера. Встановлено SSH OpenSSH_5.1p1 Debian-6ubuntu2 <необхідний OpenSSH 5.4p1. Тож ось переходьте до питань.
1. ЧИ МОЖУ ВЗАЄМАТИ РЕСТАРТ ДЛЯ ПАМ-ЗМІНИ, ЩО ВПЛИВАТИ ЕФЕКТ?
Почнемо з цього. Задіяно так багато файлів, і я не зміг зрозуміти, що робить, а що не впливає на речі, також тому, що я не знав, чи потрібно перезапускати всю систему, щоб зміни 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 на 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 -----------
Nautilus: 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 / звичайні сесії (див. Коментарі)
4. ТАКЩО ЩО МОЄ СУМАТИ УМАСКА SSHFS?
Іноді ми монтуємо сервер локально, використовуючи sshfs. Дуже корисний. Але знову ж таки, у нас є проблеми з дозволом.
Ось як ми монтуємо:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
ПРИМІТКА: ми використовуємо umask = 113, оскільки, мабуть, sshfs починається з 777 замість 666, тому з 113 ми отримуємо 664, що є потрібним дозволом на файл.
Але зараз відбувається те, що ми бачимо всі файли та каталоги так, ніби їх 664. Ми переглядаємо Nautilus до / mnt і:
- Клацніть правою кнопкою миші -> Новий файл (новий файл) --- TEST 5
- Клацніть правою кнопкою миші -> Нова папка (нова папка) --- TEST 6
- Скопіюйте та вставте файл 777 у нашого локального клієнта --- TEST 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)
Що?! Права доступу до файлів REAL сильно відрізняються від того, що ми бачимо в Nautilus. Отож, цей umask на sshfs просто створює "фільтр", який показує нереальні дозволи файлів? І я спробував відкрити файл іншого користувача, але тієї самої групи, яка мала реальні 600 дозволів, але 644 «фальшиві» дозволи, і я все ще не міг цього прочитати, тож який хороший цей фільтр ??
5. UMASK ВСЕ ПРО ФАЙЛИ. АЛЕ ЩО ПРО ДИРЕКТОРИ?
З моїх тестів я бачу, що umask, який застосовується, також якимось чином впливає на права доступу до каталогу. Однак я хочу, щоб мої файли були 664 (002), а мої каталоги - 771 (006). То чи можливо мати інший умаск для каталогів?
6. ПЕРАПАДИ УМАСК / ПАМ дійсно прохолодні, АЛЕ УБУНТУ ЩО БУДЕ БУГІ?
З одного боку, я читав теми людей, які мали успіх з 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?
Одне обережне слово з резервними копіями за допомогою дьогтю. Дистрибутиви Red Hat / Centos підтримують acls у програмі tar, але Ubuntu не підтримує acls під час резервного копіювання. Це означає, що всі acls будуть втрачені під час створення резервної копії.
Я дуже готовий перейти на Ubuntu 10.04, якщо це теж вирішить мої проблеми, але спершу я хочу зрозуміти, що відбувається.