Дайте полномочия пользователя файлов

Мне нелегко решать эту проблему.

запишите сценарий оболочки для проверки исполняемых прав на все файлы в текущем каталоге. если файл не имеет пользовательского исполняемого файла, прямо тогда делают это пользовательским исполняемым файлом.

Я думал если цикличное выполнение на всех файлах в текущем каталоге и писал вывод в текстовый файл. затем чтение четвертого символа каждой строки и проверяет, является ли это 'x' или '-'

2
задан 16 June 2015 в 21:24

3 ответа

Идея, которую Вы имеете, кажется законной, но излишне большой и сложный, скорее можно использовать это:

#!/bin/bash
for file in *; do
    [[ -x $file ]] || chmod u+x "$file"
done
  • Это считает все файлы (*) в текущем каталоге

  • Тогда, он проверит, является ли файл исполняемым файлом пользователем, выполняющим сценарий ([[ -x $file ]])

  • , Если не (||), он сделает исполняемый файл файла для пользователя (chmod u+x "$file").

значением по умолчанию * не будет соответствовать скрытым файлам, для соответствия скрытым файлам также добавляют строку

shopt -s dotglob

после строки хижины.

, Если Вы хотите искать и воздействовать только на регулярные файлы:

#!/bin/bash
for file in *; do
    if [[ -f $file ]]; then
        [[ -x $file ]] || chmod u+x "$file"
    fi
done
2
ответ дан 2 December 2019 в 02:56

Это - простое find команда с chmod:

find . -type f ! -perm -u+x -exec chmod u+x {} \;

или только для текущей папки:

find . -maxdepth 1 -type f ! -perm -u+x -exec chmod u+x {} \;
<час>

Объяснение

  • .

    Запускают поиск в текущей папке

  • -maxdepth

    Не рекурсивный

  • -type f

    Только файлы, никакие папки

  • ! -perm -u+x

    Только файлы без исполняемого флага для владельца Набора файла

  • -exec chmod u+x {}

    исполняемый флаг для владельца файла

1
ответ дан 2 December 2019 в 02:56

Мне жаль, что Вы не упомянули, является ли это часть большего проекта автоматизации или просто чего-то, что Вы хотите сделать.

Можно просто сделать следующее в каталоге:

chmod u+x *

Это добавляет исполняемое состояние ко всем файлам в папке для "Вашего пользователя". Можно попытаться добавить его для "всех"

chmod a+x *

Отметьте, у Вашего пользователя должно быть разрешение изменить файлы в той определенной папке. Это означает, что у Вас должно быть разрешение 'записи'. Иначе Вы не сможете изменить что-либо. Если Ваш пользователь является администратором, можно вызвать его с sudo команда:

sudo chmod a+x *

Если файл уже имеет исполняемое состояние, нет никакого вреда в предоставлении его состояние снова. Конечно, как я сказал, если Вы не хотите использовать название всех файлов, состояние которых изменяется для другой цели, например, создания отчетов. сценарий heemayl является хорошей вещью в таких целях.


Добавленный из комментариев Mostafa Najafiyazdi

[..] если он не хочет касаться разрешения папок, которые не имеют никакого исполняемого разрешения, он не должен использовать chmod u+x * [..]

0
ответ дан 2 December 2019 в 02:56

Другие вопросы по тегам:

Похожие вопросы: