2016-04-11 1 views
5

Я пытаюсь выяснить способ рекурсивно установить разрешения для dirs и subdirs по определенному пути и 600 для файлов. Я бы использовал следующие команды:Как установить разрешения рекурсивно, 700 для папок и 600 для файлов, не используя find

find/path-type d -print0 | xargs -0 chmod 700

find/path-type f -print0 | xargs -0 chmod 600

Но у пользователя нет разрешения на выполнение команды «Найти». В качестве обходного пути я попытался создать сценарий, содержащий приведенные выше команды от пользователя root с установленным битом setuid, поэтому он будет работать с привилегиями root (например, командами passwd или sudo, которые обычные пользователи запускают с привилегиями root):

chmod 4755 script.sh

но я не могу выполнить скрипт из ограниченной учетной записи пользователя, он все еще говорит, что у меня нет разрешения на запуск команды find.

Кто-нибудь знает, как я могу это сделать, не используя команду «найти»?

Edit: ОС: Centos 6,5

ответ

6

Видимо, это очень легко осуществить. Есть 2 способа: с помощью CHMOD только, или настройки ACL (список контроля доступа) по нужному пути:

  • Использование CHMOD я бы запустить:

    CHMOD -R и = RWX, г =, о =/path

для пользователя, которому я присвоил капитал «X», поэтому он применяется только к каталогам, а не файлам.

  • Использование ACL:

    setfacl -rm у :: RWX, г :: 0, o :: 0/путь

    setfacl -rm д: и :: RWX, г :: 0, o :: 0/path

с использованием капитала «X», поэтому он применяется только к каталогам, а не файлам. Первая команда применяет ACL, вторая делает ее политикой по умолчанию, поэтому вновь созданные файлы наследуют требуемые разрешения.

+0

Версия 'chmod' не работает должным образом,' X' является специальным исполнением, которое предоставит разрешения на выполнение, если выполняется хотя бы один из других режимов. Это означает, что если файл уже имел «x» в группе пользователей или другой, он останется с настройкой выполнения для пользователя. Чтобы сделать это только с помощью chmod, мы сначала должны уничтожить все параметры выполнения в начале, а затем запустим команду chmod. Например, 'chmod -R a-x/path; chmod -R u = rwX, g =, o =/path'. – CMCDragonkai