sftp chmod рекурсивний


1

Я зайшов на сервер через sftp через термінал.

Коли я запускаю команду

chmod -R 755 ./*

Я отримую помилку You must supply a numeric argument to the chmod command.. Як застосувати рекурсивний chmod 755, перебуваючи в sftp?


так - ось що я написав у своєму запитанні
— Іоанн

1
chmod 755 -R ./*таким чином?
— poz2k4444

@John: Я вчора відредагував свою відповідь, я думаю, що знайшов те, що ви шукали, погляньте на це ...
— jaume

Відповіді:


1

Ви, можливо, не зможете. Є хороший шанс, що chmod, доступний вам через FTP або SFTP, не підтримує рекурсивну опцію. Команди, доступні під FTP / SFTP, часто є дещо каліченими версіями того, що було б доступне локально під оболонкою. Якщо вам пощастить, chmod може діяти рекурсивно навіть без -Rвибору, але якщо вам не пощастить, вам доведеться об'їжджати дерево, chmod'ing кожен рівень один за одним.


Або напишіть сценарій, який робить це за вас.
— Роб

Звичайно, ви можете написати сценарій, але сценарій аналізує результат віддаленого lsодного рівня за часом і використовує це для створення списку підкаталогів, а потім продовжуйте повторюватися. Це не тільки можливо, я це робив сам, коли мені довелося керувати віддаленим FTP-сайтом. Але це неабияка робота.
— Ніколь Гамільтон

3

Від man sftp:

chmod mode path

Зміна дозволів шляху файлу до режиму. шлях може містити глобус (3) символів і може відповідати декільком файлам.

man 7 glob( man 3 globпосилання glob (7)) описує *,? та [] шаблони підстановок, з якими ми знайомі під час використання ls. Таким чином, ви можете використовувати:

chmod 755 ./*
chmod 755 ./*/*
chmod 755 ./*/*/*

кілька разів, поки ви не знайдете всі файли та не отримаєте помилку:

Couldn't setstat on "./*/*/*": No such file or directory

Перед такою масовою зміною ви могли заздалегідь двічі перевірити, на які каталоги впливає lls(з man sftp):

lls [ls-options [path]]

Показати перелік локального каталогу будь-якого шляху або поточного каталогу, якщо шлях не вказано. ls-параметри можуть містити будь-які прапори, підтримувані командою ls (1) локальної системи. шлях може містити глобус (3) символів і може відповідати декільком файлам.

як це (вкажіть абсолютний шлях, llsщоб уникнути сюрпризів):

lls -Rla /path

Ви також можете використовувати, lls -Rla /pathщоб переконатися, що ваш chmodпрацював так, як очікувалося.


1
Багаторівневі підстановки можуть підтримуватися або не підтримуватися, залежно від сервера. Але якщо це взагалі працює, ви маєте рацію, це хороший спосіб зробити це.
— Ніколь Гамільтон

1

Я працював на сервері, де, здавалося, не підтримувався рекурсивний текст, як описано вище в коментарі Ніколь. Підстановочний код chmod спрацював, але вийшов із часу, намагаючись запустити шалену структуру папки.

Зрештою, для мене фокус був насправді Filezilla - хоча я не міг рекурсивно chmod через термінал, Filezilla змогла це зробити якось через GUI.

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