домашние разрешения все еще слишком щедры

Это сортировка путем добавления к путям к файлам базового имени, сортировки в числовом виде, а затем удаления базового имени из начала строки:

#!/bin/bash
#
filearray=("dir1/0010.pdf" "dir2/0003.pdf" "dir3/0040.pdf" "dir4/0003.pdf")

sortarray=($(
    for file in "${filearray[@]}"
    do
        echo "$file"
    done |
        sed -r 's!^(.*)/([[:digit:]]*)(.*)$!\2 \1/\2\3!' |
        sort -t $'\t' -n |
        sed -r 's![^ ]* !!'
))

for item in "${sortarray[@]}"
do
    echo "> $item <"
done

Было бы более эффективно, если бы у вас были имена файлов в списке, который можно было бы передавать напрямую через канал, а не как массив оболочки, потому что фактическая работа выполняется структурой sed | sort | sed, но этого достаточно.

Впервые я столкнулся с этой техникой, когда программировал на Perl; на этом языке это было известно как Преобразование Шварца .

В Bash приведенное здесь преобразование в моем коде завершится ошибкой, если в базовом имени файла не -числа. На Perl это можно было бы закодировать гораздо безопаснее.

0
28.12.2019, 19:06
3 ответа

Вы хотите создать файл /etc/profile.d/umask.sh, содержащий настройку UMASK -. Все файлы, соответствующие /etc/profile.d/*.sh, обычно имеют источник /etc/profile.

Вы также можете установить его непосредственно в /etc/profile, но в будущем он может быть перезаписан системными обновлениями.

см.https://superuser.com/a/671690

1
28.01.2020, 02:29

Если вы работаете в многопользовательской системе или управляете одной, вы можете установить umaskна 077, чтобы запретить новые созданные файлы и папки, которые только владелец может читать/записывать/выполнять.

Измените разрешения на 022, если вы хотите установить некоторые пакеты.

Отказ от ответственности :Я не очень понимаю ваш пост, так что это просто для того, чтобы дать вам некоторое представление о практике, которую я использовал.

0
28.01.2020, 02:29

Файл /etc/login.defsявляется файлом конфигурации для файла конфигурации набора теневых паролей. Изman login.defs:

This page is part of the shadow-utils (utilities
for managing accounts and shadow password files)
project.

Much of the functionality that used to be
provided by the shadow password suite is now
handled by PAM. Thus, /etc/login.defs is no
longer used by passwd(1), or less used by
login(1), and su(1). Please refer to the 
corresponding PAM configuration files instead.

По-видимому, значение UMASKв /etc/login.defsне читается login. Но он читается модулем pam_umaskPAM, если модуль используется.

1
28.01.2020, 02:29

Теги

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