سؤال كيفية تكوين إذن ملف جديد ترث من الدليل الأصل؟


لدي دليل يسمى data. ثم أقوم بتشغيل برنامج نصي تحت معرف المستخدم 'الروبوت'. الروبوت يكتب إلى data دليل وتحديث الملفات داخل. الفكرة هي data مفتوح لي ولروبوت لتحديث.

لذلك أعددت الإذن ومجموعة المالك على هذا النحو

drwxrwxr-x  2 me robot-grp 4096 Jun 11 20:50 data

حيث ينتمي كل من أنا والروبوت إلى "robot-grp". أقوم بتغيير الإذن ومجموعة المالك بشكل متكرر مثل الدليل الأصل.

أنا بانتظام تحميل ملفات جديدة في data الدليل باستخدام rsync. للأسف ، لا ترث الملفات الجديدة التي تم تحميلها إذن الدليل الأصلي كما آمل. بدلا من ذلك يبدو هذا

-rw-r--r-- 1 me users       6 Jun 11 20:50 new-file.txt

عندما يحاول الروبوت تحديث new-file.txt، فشل بسبب عدم وجود إذن الملف.

لست متأكدا إذا كان إعداد umask يساعد. في anycase ، الملفات الجديدة لا تتبعها حقًا.

$ umask -S
u=rwx,g=rx,o=rx

أنا في كثير من الأحيان مرتبك من قبل إذن ملف يونكس. هل لدي حتى خطة صحيحة؟ أنا أستخدم ديبيان ليني.


81
2018-06-12 04:06


الأصل




الأجوبة:


لا تريد تغيير umask الافتراضي الخاص بالنظام الخاص بك ، وهذا يمثل مخاطرة أمنية. سوف يعمل خيار اللزوجة إلى حد ما ، ولكن استخدام ACL هو أفضل طريقة للذهاب. هذا أسهل مما تظن. المشكلة في قوائم ACL الأساسية هي أنها غير متكررة بشكل افتراضي. إذا قمت بتعيين ACL على دليل ، فإن الملفات الموجودة داخل هذا الدليل فقط ترث ACL. إذا قمت بإنشاء دليل فرعي ، فإنه لا يحصل على ACL الأصل إلا إذا تم تعيين ACL إلى recurse.

أولاً ، تأكد من تمكين ACLs لوحدة التخزين التي يعمل عليها الدليل. اذا كنت تمتلك tune2fs، يمكنك تنفيذ ما يلي:

# tune2fs -l /dev/sda1 | grep acl
Default mount options:    user_xattr acl

إذا لم يكن لديك tune2fs، ثم فحص fstabs:

# cat /etc/fstab 
/dev/system/root        /                       ext3    defaults        1 1
/dev/system/home        /home                   ext3    defaults        1 2
/dev/storage/data       /data                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2

يشير العمود الرابع الذي يشير إلى "الافتراضات" إلى نظامي (CentOS 5.5) ، حيث تعمل ACL. عندما تكون في شك ، اتركها على أنها التخلف عن السداد. إذا حاولت ضبط قائمة التحكم بالوصول (ACL) وأخطأت ، فارجع وأضف خيار ACL إلى / etc / fstab مباشرة بعد الإعدادات الافتراضية: defaults,acl.

من ما أفهمه ، فأنت تريد أن يكون لدى الجميع في مجموعة المستخدمين حق الوصول للكتابة إلى دليل البيانات. يتم إنجاز ذلك من خلال ما يلي:

setfacl -Rm g:users:rwX,d:g:users:rwX data/

51
2018-06-13 02:10



لقد استخدمت هذا الأمر ولكن لم أصلح مشكلتي ، كيف يمكنني التراجع عن هذا الأمر من فضلك؟ - Itai Ganot
هل خدعة على أوبونتو sudo setfacl -Rm g:users:rwX,d:g:users:rwX /var/www/logs_or_something. لديه مشكلة مع اختبارات PHPUnit. بعد إنشاء ملفات السجل من تشغيل اختبار اباتشي المستخدم www-data لا يمكن أن يكتب / يقرأها. - s3m3n
Itai Ganot - وفقا ل setfacl صفحة رجل، -b أو --remove-all يزيل ACLs الموسعة. - jww
لذلك ، عليك فقط إلحاق setfacl -Rm g:users:rwX,d:g:users:rwX data/ في نهاية /etc/fstab؟ - 425nesp
@ piña لا. التغيير الوحيد الذي تجريه على / etc / fstab هو التغيير defaults إلى defaults,acl. setfacl هو أمر يجب أن تهرب من المحطة. data/ يجب استبدال المسار إلى الدليل الذي تريد تغييره. - Segfault


وضع علامة على دليل setgid (g+s) سيجعل الملفات الجديدة ترث ملكية المجموعة للدليل ، لكن -g سيحاول خيار rsync تجاوز هذا.


31
2018-06-12 04:13



تعمل البتة setgid فقط على جعل الملفات التي تم إنشاؤها ترث المجموعة / إذا كان الشخص الذي يقوم بإنشاء الملف الجديد عضوًا في تلك المجموعة ؛ إذا كان المستخدم الذي تم إنشاؤه هو المالك ولكن ليس عضوًا في المجموعة ، أو أن الدليل قابل للكتابة على مستوى العالم ، فلن تفعل بتة Setgid أي شيء. ويلزم تعيين umask لجميع المستخدمين إنشاء الملف للسماح بالوصول إلى المجموعة المناسبة. - dannysauer


تنطبق الإجابات الأخرى في حالة عامة ، ولكن عندما تذكر أن rsync هو مصدر المشكلة ، قد تحتاج فقط إلى ضبط استدعائها.

لبداية ، شعبية -a العلم يجعل تصاريح نسخ rsync؛ استعمال -r istead من -a أو أضف -no-p (بدون أي أذونات متزامنة) و -no-g (لمزامنة المجموعة). يدعم أيضا rsync --chmod علم لتغيير الأذونات على الملفات التي تم إنشاؤها حديثا.


4
2017-09-03 15:36





لديك umask خاطئ للأذونات التي تريدها. أنت تريد a umask of 002. لديك حالياً umask of 022. أيضاً ، التعليق حول جعل setgid الدليل صحيح ، لكنني لست متأكداً إذا كانت ملكية مجموعة الملفات هي شيء تريد تغييره أم لا.

أذونات ملفات يونكس هي في الواقع نموذج بسيط للغاية. أجد ACLs مربكة تماما نفسي. :-)


3
2018-06-12 04:43



"أذونات ملفات يونكس هي في الواقع نموذج بسيط للغاية. أجد أن ACLs تربك نفسي تمامًا." - أشعر بنوع من العكس (ولكن +1 على أي حال). ACLs (و السماح / رفض ACEs) بسيطة و أذونات Unix لا معنى له. ولكن هذا قادم من رجل يعاني من تثبيت Postfix / Dovecot / Clam / SpamAssassin. - jww