Вы можете сделать это следующим образом:
awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2
test1 и test2 — это два файла, которые необходимо объединить
Вот пример:
[xxxx@xxxx test]$ awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2
job_id | execution_time execution_time
--------+--------------------
12347 | 00:01:43.634521
12345 | 00:04:42.454282 00:02:34.321451
12346 | 00:03:26.360487
Да, программа sudo
позволяет ограничивать действия пользователя. Политика находится в файле / etc / sudoers
. Если вы хотите разрешить только определенные операции, напишите сценарий, который реализует только их, и ограничьте их запуском только в качестве команды. Чтобы быть уверенным, что безопасность - это именно то, что вам нужно, вам, вероятно, необходимо изучить справочные страницы sudo
и sudoers
.
Нет, вы не можете этого сделать. Если вы дадите кому-то права root, он сможет делать все, включая чтение и запись каждого файла. Даже если существовал способ каким-либо образом исключить /root/database.yml
, root все равно мог изменить конфигурацию sudo, заменить двоичный файл sudo, получить доступ к диску напрямую и т. Д.
Если вы этого не сделаете доверяйте коллегам-администраторам, не храните никаких секретов на машине.
Если вы хотите сохранить конфиденциальный файл и иметь администраторов, которые не могут прочитать этот файл, тогда файл должен храниться на другом компьютере, а не на том компьютере, на котором эти люди являются администраторами. Разумеется, разные машины могут быть виртуальными машинами или контейнерами, они не обязательно должны быть отдельными физическими машинами.
Итак, поместите все службы, которыми вы хотите, чтобы ваши коллеги-администраторы управляли, в виртуальной машине или контейнере, и сделайте их корневыми в виртуальной машине / контейнере. Храните конфиденциальный файл /root/database.yml
на хосте и не давайте никаких прав root на хосте.