Як отримати повний контроль над дозволами umask / PAM /?


11

// Оновлено 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:

Тож я вже не знаю, у що вірити. Чи варто просто відмовитися? Чи вирішив би ACL всі мої проблеми? Або у мене знову проблеми з використанням Ubuntu?

Одне обережне слово з резервними копіями за допомогою дьогтю. Дистрибутиви Red Hat / Centos підтримують acls у програмі tar, але Ubuntu не підтримує acls під час резервного копіювання. Це означає, що всі acls будуть втрачені під час створення резервної копії.

Я дуже готовий перейти на Ubuntu 10.04, якщо це теж вирішить мої проблеми, але спершу я хочу зрозуміти, що відбувається.

Відповіді:


3

Тут може відбуватися багато речей.

Перші думки:

  • так, зміни pam.d набирають чинності негайно
  • /etc/pam.d/common-session найкраще місце для встановлення за замовчуванням umask
  • будь-який пам.d umask буде замінений будь-яким входом у систему .bashrc,
    але .bashrcчитається лише за певних обставин (інтерактивна оболонка без входу)
  • testfile (711) дуже дивно
    • як /homeвстановлено, і чи використовуєте ви ACL?
      (наприклад, що робити ls -ld /homeта getfacl /homeдрукувати?)
    • зробив testfileвже існує , перш ніж зробили копію, тому що scpне змінюватиме права доступу на файл , який вже існує (якщо не використовувати -pпрапор)
  • Nautilus, як відомо, створює файли по-іншому, не знаючи, чому, або які правила
  • umask=0113 ймовірно, викличе проблеми
  • чи сервер і клієнт працюють в одній операційній системі?
    наприклад, якщо у клієнта увімкнено ACL, або це Cygwin, поведінка може бути різною
  • найкращий спосіб примусового використання дозволів - це використання ACL за замовчуванням, саме тому, що, як ви виявили, користувач umaskможе перекрити користувачі в .bashrcі .bash_profile.

Оновлення:

  • umask=0113 для sshfs - це неправильно.
    1. Спробуйте встановити, не вказуючи a umask
    2. Створіть новий файл у точці монтування за допомогою touch.
    3. Ви повинні бачити, що виходить лише напр. -rw-r--r--, Без xшматочків
    4. Маскуючи xбіти, ви можете зламати каталоги
      та компілятори, можливо, не зможете належним чином створити виконувані файли

Обхід:

Якщо ми не можемо придумати нічого кращого, ви можете використовувати famабо gaminслідкувати за тим, як створюються нові файли та виправляти на них дозволи, або навіть просто сценарій, який періодично запускається і встановлює дозволи на всі файли.


Спасибі! Гаразд, тому я видалив ВСІ налаштування umask, крім pam.d / common-session. Це вирішило кілька питань! Тест 1 (SCP) і Тест 4 (Новий файл у Nautilus) зараз працюють добре. Зараз перешкоди копіюють на сервер файл із будь-якими дозволами в Nautilus (Тест 3 - все ще 777 замість 664). І каталог видає. І сервер, і клієнт - Ubuntu (хоча 9.10 проти 10.10), і додаткові ACL не включені.

Звучить, як копіювання з Nautilus - це збереження дозволів на кшталт cp -pабо scp -pхотілося б.
Мікель

Будь-яка ідея, як це змінити ??

Якої поведінки ви хочете? Ви можете встановити дозволи для нових файлів за замовчуванням, використовуючи ACL за замовчуванням. Наутілус буде шанувати ACL за замовчуванням. Див. Vanemery.com/Linux/ACL/linux-acl.html для огляду та suse.de/~agruen/acl/linux-acls/online для всіх деталей.
Мікель

Зауважте, що ACL за замовчуванням не застосовує максимальний набір дозволів, вони просто роблять ці дозволи за замовчуванням. cp -p, scp -pі копіювання через Nautilus намагатиметься зробити дозволи копії такими ж, як і файл, який копіюється.
Мікель

0

Це не пов'язано з PAM / umask, але воно може бути корисним для вас.

Якщо встановити жорстку директорію, то всі файли та каталоги, створені всередині неї, автоматично призначаються до її групи.

root@ricarda ~ # mkdir hello      
root@ricarda ~ # chown :users hello 
root@ricarda ~ # chmod g+s hello
root@ricarda ~ # ls -l |grep hello 
drwxr-sr-x. 2 root users  4096 Feb  7 04:05 hello
root@ricarda ~ # touch hello/some_file
root@ricarda ~ # mkdir hello/some_dir
root@ricarda ~ # ls -l hello/       
total 4
drwxr-sr-x. 2 root users 4096 Feb  7 04:16 some_dir
-rw-r--r--. 1 root users    0 Feb  7 04:06 some_file

Спасибі! Я про це не знав. Це не вирішує питань з дозволом, але це корисно дійсно!


0

ACL повинні добре працювати для вас.

Встановіть ACL за всіма папками для групи, яка буде успадкована всіма майбутніми файлами та каталогами.

Щось подібне setfacl -m d:g:uploaders:rwxповинно працювати.

Щоб виправити наявні дозволи:

find /shared/folder -type d -exec setfacl -m d:g:uploaders:rwx {} \;
find /shared/folder -type f -exec setfacl -m g:uploaders:rw {} \;

Схоже, якщо "копіювати" встановлено при копіюванні файлу, ACL за замовчуванням не працює. У такому випадку я можу лише запропонувати запустити команди пошуку в cron або контролювати зміни файлової системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.