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

Перед такою масовою зміною ви могли заздалегідь двічі перевірити, на які каталоги впливає llsman 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.