cut(1)
Ваш друг:
dig -t any bix.hu | egrep -v "^;;|^;|^$" | sort | cut -c1-16,22-
Используйте параллельную оболочку
parallelshell "echo 1" "echo 2" "echo 3"
https://github.com/keithamus/parallelshell
-121--22030-Можно включить ее в состояние оболочки, например:
[ "$(find . ...)" '!=' '' ] && echo Found || echo Not found
Где ...
- условие соответствия, например, -name * .txt
.
Некоторые другие примеры:
[ "$(find /etc -name hosts)" ] && echo True || echo False
[ ! -z "$(find /etc -name hosts)" ] && echo True || echo False
-121--27104- Последствия этого для безопасности, вы можете установить setuid
бит
chmod +s /bin/cgcreate
chmod +s /bin/cgdelete
, чтобы дать не корневым пользователям, которые запускают эту программу root power.
Рекомендация состоит в том, чтобы затем удалить обычный доступ пользователя
chmod 550 /bin/cgcreate
chmod 550 /bin/cgdelete
и создать специальную группу, которой вы хотите разрешить использовать cgcreate IE cgusers
,
groupadd cgusers
и изменить членство группы в этих файлах на эту группу:
chgrp cgusers /bin/cgcreate
chgrp cgusers /bin/cgdelete
После этого все пользователи в группе cgusers
будут запускать cgcreate
и cgdelete
как root, а не как собственные. Вам просто нужно иметь членов, которые хотели бы иметь эту власть под нужной группой.
В конечном счёте, группы обрабатываются через файловую систему(ы) cgroup. Возможность создавать cgroups должна быть просто возможностью создавать каталоги под ними и записывать в файлы. Если вы смонтируете FS группы cgroup с более сложными правами доступа, или если вы измените их права "на лету", то определенные пользователи должны иметь возможность выполнять определенные действия. Очевидно, что вы не сможете добавить идентификаторы процессов других пользователей в файл задач. Вы сможете добавлять только идентификаторы ваших пользователей.
Сказав это, я не уверен, что вышесказанное является глобальным. Т.е. есть вероятность того, что некоторые cgroups не поддерживают это.
В целом, лучшим подходом является использование менеджера cgroup, который затем может быть проинструктирован об ассоциировании задач с cgroup. Я считаю, что cgmanager делает что-то подобное.
Краткий ответ — нет.
Для создания и назначения владельца контрольной группы требуются привилегии суперпользователя. Нет надежного способа обойти это.
Однако вы можете создать контрольную группу и назначить ее владельцем определенному пользователю или группе.
Пользователь
$ u=$(whoami)
$ sudo mkdir /sys/fs/cgroup/cpuset/${u}
$ sudo chown -R ${u}: /sys/fs/cgroup/cpuset/${u}
Группа
$ g=MYGROUP && grep ^${g}: /etc/group || echo "Your group doesn't exist. Run \"mkgroup $g\" and repeat this command before you continue."
$ sudo mkdir /sys/fs/cgroup/cpuset/${g}
$ sudo chgrp -R ${g} /sys/fs/cgroup/cpuset/${g}
В обычном сценарии вы устанавливаете cgcreate
, cgset
, cgdelete
, cgget
и т. д. как корень . В конце концов, программа/скрипт, предназначенный для ограничения использования многих ресурсов, будет выполняться как обычный пользователь. Итак, настройте как root, используйте и выполняйте как пользователь.
Это делается с помощью параметров -a
и -t
команды cgcreate
(, выполняемой от имени пользователя root ). Итак, уже при создании группы. В моем случае:
cgcreate -t monero:monero -a monero:monero -g memory,cpu:monerogroup
где monero — имя пользователя будущего пользователя, который будет выполнять и запускать программу с ограничениями cgroup. Тонкую разницу между подпараметрами -a
и -t
можно найти на справочных страницах cgcreate
.
man cgcreate
В большинстве случаев это один и тот же пользователь.
Затем установите ограничения (как root):
cgset -r memory.limit_in_bytes=$((4*1024*1024*1024)) monerogroup
cgset -r cpu.shares=128 monerogroup
Проверьте свои записи, если хотите:
cgget -g memory:/monerogroup | grep bytes
А затем, в конце концов, переключите пользователя, в моем случае пользователя monero, и из нужной папки:
cgexec -g memory,cpu:monerogroup./monerod
У пользователя не возникнет проблем с разрешениями, если вы настроите их специально для него.