Написание и выполнение программы для поведения консоли

No puede editar los archivos de inicio de shell del otro usuario a menos que los permisos estén configurados de manera insegura. Hacerlo sin su conocimiento o consentimiento (, lo que se aplica a cualquier archivo en su directorio principal ), se consideraría poco ético y también podría considerarse una infracción de conducta, según las reglas de conducta vigentes en el sistema.

Si tiene sudoderechos en el sistema y considera jugar esta "broma", entonces no debería tener sudoderechos en ese sistema .

El primer comando agregaría bashcomo comando al final de .bashrc. Si esto estaba .bashrcen el directorio de inicio del usuario, y si el usuario era un usuario bash, entonces esto causaría que se iniciara un bucle recursivo infinito de shells interactivos (tan pronto como se iniciara una de esas sesiones de shell ), hasta que finalice o se encuentre con restricciones de recursos.

El segundo comando causaría un bucle similar, pero el código solo se ejecutaría en un único entorno de proceso bash. Esto continuaría hasta que terminara, o hasta que alguna variable de entorno (como PATH, si el script agregado en cada iteración )fuera demasiado grande, momento en el que se alcanzaría un límite de recursos.

En un sistema de varios -usuarios, estas dos "bromas" pueden afectar a otros usuarios, ya que los recursos compartidos (CPU y memoria en su mayoría )se consumen.

Editar, corregir y luego guardar el archivo .bashrcmientras los escenarios anteriores están en curso detendría el ciclo, pero no liberaría recursos hasta que el bashproceso (es )del usuario afectado finalice.

Como una solución de pánico, uno podría detenerlo usando pkill -U username bashcomo root, o con pkill bashcomo el usuario afectado. Esto terminaría todos los procesos bashdel usuario afectado.

1
07.06.2019, 19:24
1 ответ

Вероятно, самый простой подход состоит в том, чтобы ваша программа использовалаpipe2три раза для создания трех конвейеров (для каждого из stdin, stdout и stderr ). Вероятно, вы хотите, чтобы они находились в неблокирующем -режиме. Затем разветвите и попросите ребенка использоватьdup2для помещения каналов в файловые дескрипторы 0, 1 и 2. Затем ребенок использует один из семейства exec для запуска bash.

Родитель может затем использовать select, чтобы определить, есть ли данные для чтения или место для записи.

Вероятно, существуют библиотеки или существующие реализации, которые вы могли бы использовать.

Примечание #1:pipe2возвращает два файловых дескриптора, один для стороны чтения и один для стороны записи канала. Например, для стандартного ввода bash,bash нужна сторона чтения (для чтения ввода ), а вашей программе нужна сторона записи (для записи ввода bash ). bash stdout будет противоположным :bash нужна сторона записи, вашей программе нужна сторона чтения.

Примечание #2 :Это не дает вам полного опыта использования терминала; для этого вам нужно иметь дело с ptys, что добавляет кучу сложности (и, честно говоря, мне пришлось бы искать ). Если вы этого хотите, я определенно предлагаю поискать аналогичную программу для начала.

1
27.01.2020, 23:41

Теги

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