Точка в имени пользователя linux вызывает: «Имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено».

Вы используете NRв качестве индекса, когда помещаете данные вm:

m[i,NR]=$i

После чтения файла legendNRне сбрасывается, что означает, что индекс не начинается с 1,1. Вместо этого вы можете использовать FNRили mh + 1.

Остальную часть кода я не смотрел.


Некоторые предложения по улучшению:

Я не знаю, как выглядят ваши данные, поэтому предположил. NFи FNRостаются нетронутыми из последней строки ввода в блоке END, поэтому, пока последняя строка вашего последнего файла была правильной и полностью указанной, это должно работать. Это избавляет от переменных mhи mw.

Самый простой способ зациклиться на простом массиве — использовать for (i in arr). Это устанавливает iдля каждого индекса в массиве по очереди. Однако обратите внимание, что индексы вполне могут быть представлены в цикле «не по порядку».

Первый блок читает файл legend. Это означает, что этот должен быть первым файловым операндом в командной строке.

NR == FNR { l[FNR] = $1; next }

{
    for (i = 1; i <= NF; i++) {
        m[i,FNR] = $i
    }
    print
}

END {
    print "LEGEND:"
    for (i in l) print l[i]

    print "MAIN:"
    for (h = 1; h <= FNR; h++) {
        printf("For line %d\n", h)
        for (w = 1; w <= NF; w++) {
            printf("For element %d\n", w)
            if (m[w,h]) print m[w,h]
        }
    }
}

Для этой последней двойной петли вы также можете сделать

for (i in m) print i, m[i]

но вы пропустили порядок и дополнительный информационный вывод.

1
23.01.2020, 03:46
1 ответ

Решение было дано в комментарии muru .

sudo will read each file in /etc/sudoers.d, skipping file names that end in ‘~’ or contain a ‘.’ character...

https://www.sudo.ws/man/1.8.15/sudoers.man.html#Including_other_files_from_within_sudoers

Как указал Роайма в другом комментарии:

The dot in the username doesn't cause the issue. It's because you chose to put the sudo configuration in a file whose name contains a dot.

В этом-то и была проблема. И решение, которое я проверил, было просто:

sudo mv /etc/sudoers.d/user.name /etc/sudoers.d/username
2
28.04.2021, 23:25

Теги

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