Сортировать по пользовательскому шаблону?

В инструкциях сказано, что сценарий установки должен запускаться от имени пользователя root :, после чего он должен иметь полный доступ на запись ко всему.

Если программа не запускается от имени пользователя root и по-прежнему нуждается в доступе к /etc/init.dпосле установки, это очень необычно , но может быть организовано, если это действительно необходимо:

1. )Создайте группу. Вы можете назвать его как хотите. Опция -rсоздает его с использованием диапазона номеров GID, выделенного для системных групп, поэтому его нельзя путать с группами, связанными с обычными пользователями :

.
sudo groupadd -r proteios

2. )Добавьте пользователя, которому требуется доступ на запись к /etc/init.d, в эту группу:

sudo usermod -a -G proteios someuser

3. )Назначьте владение группой в /etc/init.dновой группе. Если это нужно нескольким пользователям,просто повторите этот шаг столько раз, сколько необходимо:

sudo chgrp -R proteios /etc/init.d

4. )Назначить групповой доступ для записи:

sudo chmod -R g+rwX /etc/init.d

5. )Убедитесь, что все новые файлы, созданные в этом каталоге, по умолчанию принадлежат группе proteios:

sudo chmod g+s /etc/init.d

Я бы предпочел сначала сделать все это на удаленной -виртуальной машине, чтобы посмотреть, что на самом деле хочет делать это программное обеспечение Proteios /etc/init.d. Это программное обеспечение, кажется, имеет встроенное -предположение, что компьютер, на котором установлен Proteios, будет использоваться только для Proteios и ни для чего другого, и поэтому ему не нужно особо заботиться о безопасности или стандартных соглашениях -— опасное предположение.


Если выясняется, что программа хочет изменить только свой собственный сценарий запуска -, но делает это таким образом, что доступа на запись только к самому сценарию недостаточно (, например. он хочет сделать резервную копию старого файла перед созданием нового ), тогда я мог бы не добавлять разрешения к реальному /etc/init.d, а вместо этого попробовать перенаправить приложение, создав каталог с подходящими разрешениями в другом месте (например /opt/proteios/etc/init.d), добавив

export SERVICE_PATH=/opt/proteios/etc/init.d

в начало сценария запуска Proteios и в среду любого пользователя, использующего Proteios, а затем создание символической ссылки из (каждого )запуска Proteios -сценария запуска, созданного в пользовательском каталоге, обратно в реальный/etc/init.d:

sudo ln -s /opt/proteios/etc/init.d/* /etc/init.d/

Таким образом, Proteios может изменять свои файлы сколько угодно, но не может изменять другие системные службы. Если он хочет добавить другие ранее неизвестные сценарии запуска -, администратор должен будет создать для них символические ссылки, если эти сценарии действительно должны запускаться во время загрузки. Это должно помешать пользователям манипулировать другими системными службами через Proteios.

2
12.08.2020, 14:28
1 ответ

Вы всегда можете использовать декорирование -сортировку -недекорирование:

<input awk -v OFS=: '{print ++n[$0], $0}' |
  sort -t: -k1,1n -k2 |
  cut -d: -f2-

Где awkдобавляет перед каждой строкой вхождение строки в виде числа для sortсортировки по первому key (числовому порядку )и исходной строке в качестве второго ключа (порядок сортировки локали по умолчанию ).

Здесь, используя :в качестве разделителя вместо SPC по умолчанию awkи перехода по умолчанию sortот непустого -пробела к пробелу по умолчанию, SPC будет включен в второй ключ, который может (маловероятно )повлиять на сортировку.

4
18.03.2021, 23:13

Теги

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