ملف scp لا يقوم بتعيين المالك الصحيح
-
19-08-2019 - |
سؤال
هل يواجه SCP مشكلة في تعيين أذونات الملفات أو هل أخطأت في تكوين الخادم الخاص بي؟
تم التحديث (19/مارس/09):في الحقيقة:لا توجد مشكلة - لقد أسأت فهم طريقة عمل الأذونات - فهي لا تتغير عندما تتغير محتويات الملف
حالة الاستخدام:
يوجد ملف على الخادم أريد تحريره يسمى "importantFile.txt".يحتوي الملف على مالك ومجموعة "رئيسية":
ls -l importantFile.txt:
-rw-rw-r-- 1 master master 7 Mar 18 08:11 importantFile.txt
يُدعى "العبد" ولكن لحسن الحظ، أنا في المجموعة "السيد" حتى أتمكن من تعديل الملف كما أراه مناسبًا.ومع ذلك، أنا عبد كسول ولا أستطيع أن أزعج نفسي بتحرير الملف على الخادم، أفضل تحرير الملف على جهازي المحلي وإرساله إلى الخادم:
echo "bored slave info" > importantFile.txt
scp importantFile.txt slave@theServerAddress:/pathToFile/importantFile.txt
إذا قمت بذلك، فسيتم تحميل محتويات الملف على الخادم بشكل جيد ويتم تحديث الطابع الزمني للملف ولكن أذونات الملف لا تتغير، ولا يزال الملف مملوكًا لـ "الرئيسي".هذه مشكلة لأنه إذا قام "العبد" بتحميل محتوى سيئ، فلن يعرف أحد أن "العبد" هو الذي تسبب في المشكلة، وسيبدو "السيد" مذنبًا.
ربما لا بد لي من تعيين umask؟إذا كان الأمر كذلك حيث؟لقد قمت بتجربة .bash_profile دون نجاح ولم أجد أي شيء على Google حول umask في /etc/ssh/sshd_config
.
المحلول
لا يوجد شيء خاص بخصوص scp - حاول تسجيل الدخول إلى الخادم كعبد، وتحرير الملف باستخدام محرر النصوص المفضل لديك...ستجد نفس السلوك يحدث...الكتابة إلى ملف لا تجعلك مالك الملف.
مثال:
كجذر
#cd /tmp
#mkdir fubar
#chgrp vboxusers fubar
#cd fubar/
#touch testfile
#chgrp vboxusers testfile
#chmod g+w . testfile
#ls -al
total 16
drwxrwxr-x 2 root vboxusers 4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root 12288 2009-03-19 10:29 ..
-rw-rw-r-- 1 root vboxusers 0 2009-03-19 10:30 testfile
#echo foo > testfile
#ls -al
total 20
drwxrwxr-x 2 root vboxusers 4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root 12288 2009-03-19 10:29 ..
-rw-rw-r-- 1 root vboxusers 4 2009-03-19 10:30 testfile
كمستخدم (في مجموعة vboxusers)
>cd /tmp/fubar
>ls -al
total 20
drwxrwxr-x 2 root vboxusers 4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root 12288 2009-03-19 10:29 ..
-rw-rw-r-- 1 root vboxusers 4 2009-03-19 10:30 testfile
>echo bar >> testfile
>ls -al
total 20
drwxrwxr-x 2 root vboxusers 4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root 12288 2009-03-19 10:29 ..
-rw-rw-r-- 1 root vboxusers 8 2009-03-19 10:31 testfile
>vim testfile
>ls -al
total 20
drwxrwxr-x 2 root vboxusers 4096 2009-03-19 10:31 .
drwxrwxrwt 15 root root 12288 2009-03-19 10:31 ..
-rw-rw-r-- 1 root vboxusers 12 2009-03-19 10:31 testfile
>cat testfile
foo
bar
baz
نصائح أخرى
يجب عليك حذف الملف للكتابة فوقه.يعتمد ما إذا كنت قادرًا على القيام بذلك على أذونات الدليل وملكيته.لا يمكن الاستيلاء على ملكية ملف موجود بالفعل.يتم تطبيق إذن الكتابة الذي لديك فقط على محتويات الملف.
يبدو أنه يمكنك تكوين كيفية تعامل Emacs مع هذا من خلال backup-by-copying-when-mismatch
متغير (راجع دليل Emacs أو اكتب C-h-v backup-by-copying-when-mismatch
في ايماكس).
لقد قدمت في الواقع أ تقرير الشوائب حول هذا، لأنني اعتقدت أنه كان خطأ في الصعلوك.
لقد أساءت فهم طريقة عمل الملفات، فتعديل محتويات الملف لا يغير الملكية أو المجموعة.
لماذا الارتباك؟ إيماكس - كلما كنت أقوم بتحرير ملف كنت أستخدم Emacs ويقوم Emacs بتغيير المالك والمجموعة إلى المستخدم الحالي.يقوم بذلك لأنه يقوم بإنشاء ملف نسخة احتياطية في الوقت المناسب عن طريق نقل "اسم الملف" إلى "اسم الملف ~" وإنشاء ملف جديد يسمى "اسم الملف" - لأنه ملف جديد، فهو يتمتع بأذونات ملف المستخدمين الحاليين.أعتقد أن هذا هو 1up إلى VI المشجعين؟