أرغب في تغيير أذونات أي مجلد وكل مجلداته الفرعية وملفاته في خطوة واحدة (الأمر) في Linux.
لقد جربت بالفعل الأمر أدناه لكنه يعمل فقط للمجلد المذكور:
chmod 775 /opt/lampp/htdocs
هل هناك طريقة لتعيين chmod 755
لـ /opt/lampp/htdocs
وكافة محتوياته بما في ذلك المجلدات الفرعية والملفات؟
أيضًا ، في المستقبل ، إذا قمت بإنشاء مجلد أو ملف جديد داخل htdocs
، فكيف يمكن تعيين أذونات ذلك تلقائيًا إلى 755
؟
لقد ألقيت نظرة على هذا الرابط أيضًا:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
الإجابات الأخرى صحيحة ، حيث أن chmod -R 755
ستعين هذه الأذونات على جميع الملفات والمجلدات الفرعية في الشجرة. ولكن لماذا على الأرض تريد ؟ قد يكون من المنطقي بالنسبة للأدلة ، ولكن لماذا ضبط بت التنفيذ على جميع الملفات؟
أظن أن ما تريد فعله حقًا هو تعيين الأدلة إلى 755 وإما ترك الملفات بمفردها أو تعيينها على 644. لهذا ، يمكنك استخدام الأمر find
. فمثلا:
لتغيير كل الدلائل إلى 755 (drwxr-xr-x
):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
لتغيير كل الملفات إلى 644 (-rw-r--r--
):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
تحقق من الخيار- R
chmod -R <permissionsettings> <dirname>
في المستقبل ، يمكنك توفير الكثير من الوقت عن طريق التحقق من الصفحة الأولى أولاً:
man <command name>
لذلك في هذه الحالة:
man chmod
إذا كنت ترغب في تعيين أذونات على جميع الملفات إلى a+r
، وجميع الأدلة إلى a+x
، والقيام بذلك بشكل متكرر من خلال شجرة الدليل الفرعي كاملة ، استخدم:
chmod -R a+rX *
يتم تجاهل X
(الذي هو X
، وليس صغير x
!) للملفات (ما لم تكن قابلة للتنفيذ لشخص ما بالفعل) ولكن يتم استخدامه للأدلة.
يمكنك استخدام -R
مع chmod
لاجتياز العودية لجميع الملفات والمجلدات الفرعية.
قد تحتاج إلى Sudo لأنه يعتمد على LAMP يتم تثبيته بواسطة المستخدم الحالي أو آخر:
Sudo chmod 755 -R /opt/lampp/htdocs
لتعيين جميع المجلدات الفرعية (بشكل متكرر) استخدم -R
chmod 755 /folder -R
واستخدم umask لتعيين الافتراضي إلى مجلدات/ملفات جديدة/umask 755
الأمر العودية الصحيح هو:
Sudo chmod 755 -R /opt/lampp/htdocs
-R
: قم بتغيير كل مجلد فرعي بما في ذلك المجلد الحالي
سوف chmod 755 -R /opt/lampp/htdocs
تعيين الأذونات بشكل متكرر. لا توجد طريقة لتعيين أذونات الملفات تلقائيًا في هذا الدليل فقط الذي تم إنشاؤه بعد تعيين الأذونات ، لكن يمكنك تغيير أذونات الملفات الافتراضية على مستوى النظام عن طريق تعيين umask 022
.
قد ترغب في النظر هذه الإجابة التي قدمها nik على المستخدم الخارق واستخدام "chmod واحد" لجميع الملفات/المجلدات مثل هذا:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
استعمال:
Sudo chmod 755 -R /whatever/your/directory/is
ومع ذلك ، كن حذرا مع ذلك. يمكن أن يؤذيك حقًا إذا قمت بتغيير أذونات الملفات/المجلدات غير الصحيحة.
فيما يلي طريقة أخرى لتعيين الدلائل إلى 775 والملفات إلى 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
قد يبدو طويلاً ، لكنه رائع لثلاثة أسباب:
man
(انظر أدناه).لاحظ أنني لم أؤكد فرق الأداء (إن وجد) بين هذا الحل وبين استخدام أمرَي find find (كما في حل Peter Mortensen). ومع ذلك ، رؤية مثال مماثل في الدليل أمر مشجع.
مثال من صفحة man find
:
find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
Traverse the filesystem just once, listing setuid files and direc‐
tories into /root/suid.txt and large files into /root/big.txt.
في صحتك
يعمل chmod -R 755 directory_name
، ولكن كيف يمكنك الاحتفاظ بملفات جديدة إلى 755 أيضًا؟ تصبح أذونات الملف هي الإذن الافتراضي.
تريد التأكد من أن الملفات والدلائل المناسبة هي chmod-ed/أذونات تلك المناسبة. لجميع الدلائل التي تريدها
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
ولجميع الصور ، JavaScript ، CSS ، HTML ... حسنًا ، يجب ألا تنفذها. لذلك استخدم
chmod 644 img/* js/* html/*
ولكن بالنسبة إلى كل رمز المنطق (على سبيل المثال PHP الكود) ، يجب عليك تعيين أذونات بحيث لا يمكن للمستخدم رؤية هذا الرمز:
chmod 600 file
بالنسبة لنظام التشغيل Mac OS X 10.7 (Lion) ، يكون:
chmod -R 755 /directory
ونعم ، كما يقول الآخرون ، كن حذرًا عند القيام بذلك.
أعتقد أن آدم كان يسأل عن كيفية تغيير قيمة umask لجميع العمليات التي ترتبط بالعمل على دليل /opt/lampp/htdocs
.
يستخدم قناع وضع إنشاء ملف المستخدم (umask) لتحديد إذن الملف للملفات التي تم إنشاؤها حديثًا. يمكن استخدامه للتحكم في إذن الملف الافتراضي للملفات الجديدة.
لذلك ، إذا كنت ستستخدم نوعًا من برنامج ftp لتحميل الملفات إلى /opt/lampp/htdocs
، فأنت بحاجة إلى تكوين خادم ftp الخاص بك لاستخدام umask الذي تريده.
إذا تم إنشاء ملفات/أدلة على سبيل المثال بواسطة php ، فأنت بحاجة إلى تعديل كود php
<?php
umask(0022);
// other code
?>
إذا كنت ستقوم بإنشاء ملفات/مجلدات جديدة من جلسة bash ، فيمكنك تعيين قيمة umask في ملف تعريف Shell الخاص بك ~/.bashrc أو يمكنك إعداد umask في ملف /etc/bashrc
أو /etc/profile
لجميع المستخدمين. أضف ما يلي إلى الملف: umask 022
Sample umask Values and File Creation Permissions
If umask value set to User permission Group permission Others permission
000 all all all
007 all all none
027 all read / execute none
ولتغيير أذونات الملفات التي تم إنشاؤها بالفعل ، يمكنك استخدام find. أتمنى أن يساعدك هذا.
هناك إجابتان لإيجاد الملفات وتطبيق chmod
عليها. أول واحد هو find
الملف وتطبيق chmod
كما يجد (كما هو مقترح بواسطةWombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
الحل الثاني هو إنشاء قائمة بجميع الملفات باستخدام الأمر find
وتزويد هذه القائمة بالأمر chmod
(كما هو مقترح بواسطةlamgesh).
chmod 755 $(find /path/to/base/dir -type d)
يعمل كلا الإصدارين في Nice طالما أن عدد الملفات التي يتم إرجاعها بواسطة الأمر find
صغير. الحل الثاني يبدو رائعا للعين وأكثر قابلية للقراءة من الحل الأول. إذا كان هناك عدد كبير من الملفات ، فسوف يعرض الحل الثاني خطأ: Argument list too long.
لذلك اقتراحي هو
chmod -R 755 /opt/lampp/htdocs
إذا كنت تريد تغيير أذونات جميع الملفات والدلائل مرة واحدة.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
إذا كان عدد الملفات التي تستخدمها كبيرًا جدًا. يبحث الخيار -type x
عن نوع محدد من الملفات فقط ، حيث يتم استخدام d للعثور على الدليل و f للملف و l للرابط.chmod 755 $(find /path/to/base/dir -type d)
خلاف ذلكانه بسيط جدا.
في محطة الذهاب إلى مدير الملفات. مثال: Sudo nemo
. انتقل /opt/
ثم انقر فوق خصائص → إذن . ثم أخرى . أخيرًا ، قم بالتغيير لإنشاء وحذف وحفظ الملف للقراءة والكتابة والنقر فوق زر تطبيق ... والعمل.