Если вы просто хотите найти имена файлов, вы можете использовать следующую команду:
find -exec basename '{}' ';' | egrep '^.{100,}$'
Это запустит find
, извлекая имя файла или каталога с помощью basename
а затем найдите любое имя файла или имя каталога, содержащее не менее 100 символов. Если вы хотите найти имя файла точной длины, используйте {100}
вместо {100,}
.
Если вы хотите найти имена файлов, включая путь, сделайте следующее:
find | egrep '/[^/]{100,}$'
Это вернет имя файла, включая относительный путь к тому месту, где вы запустили команду поиска.
В зависимости от вашего дистрибутива и ядра вы можете использовать AppArmor или SELinux для хранения своих приложений. В целом я бы сказал, что AppArmor удобнее в настройке и обслуживании. Вики Ubuntu содержит несколько статей, объясняющих основные понятия.
Я не прочитал в описании вашей проблемы ничего, что мешало бы вам создавать разные учетные записи пользователей для приложений. Затем вы можете использовать тривиальные права доступа к файлам для предотвращения помех :
.chown app1 /var/lib/myapps/app1
chmod 700 /var/lib/myapps/app1
sudo -u app1 /var/lib/myapps/app1/run.sh
редактировать
Если оценщик работает как root
, он может просто запускать приложения через sudo
.
Если оценщик не запускается как root
, тогда приложения, которые он вызывает (обычным способом ), могут быть установлены с битом SUID (, установленным идентификатором пользователя ), чтобы процесс выполнялся как пользователь, которому принадлежит двоичный файл, а не как пользователь процесса оценки.
Без сдерживания я бы посоветовал запускать приложение в chroot-окружении конкретным пользователем, как предложил Хауке Лагинг. cf человек chroot
Его легко настроить, сложность зависит от того, к какому ресурсу нужно приложению получить доступ