Назад | Перейти на главную страницу

su пользователю, которого больше не существует?

У меня интересная ситуация, когда аккаунт пользователя временно удалили (вовремя не продлили оформление документов). Однако, благодаря магии «экрана», его процессы все еще работают.

Я хотел бы иметь возможность повторно подключиться к этим старым сеансам экрана и сохранить некоторые данные. Это возможно? У меня есть полномочия sudo, но я не знаю, как их применить в этом случае.

Обычно я бы сделал:

  1. chmod 777 `tty`
  2. sudo su <user>
  3. screen -x

но в этом случае пользователь больше не существует. Наивное подключение старого идентификатора пользователя не сработало (хотя я и не ожидал этого).

Это RedHat Enteprise Linux 5: (2.6.18-53.1.14.el5)

Вы не можете просто временно снова создать учетную запись пользователя, используя тот же UID?

Хорошо, вот почему пользователей следует отключать, а не удалять. Есть встроенные параметры passwd для такого рода вещей (и настройки существуют в каждом программном обеспечении для централизованного управления пользователями, о котором я знаю для этого).

Но ты здесь не для того, чтобы на тебя кричали.

Файлы пользователя все еще существуют или они были удалены вместе с учетной записью? Screen использует файлы блокировки для повторного подключения, и если они исчезли, я, честно говоря, не знаю, как восстановить сеансы.

Попробуйте по возможности воссоздать UID, предложенный Кейраном. Иногда это невозможно, особенно при централизованной аутентификации, когда идентификаторы хешируются из другой пользовательской информации, но если вы можете, это было бы здорово.

Если вы не можете этого сделать, вам нужно найти способ взять под контроль терминал. Я собираюсь предположить, что TTYSnoop еще не настроен в вашей системе. В этом случае он станет волосатым.

Предполагая, что ваши сеансы экрана выдают вам терминал pts / #, как у меня, может (МОЖЕТ) быть шанс. pt означает псевдотерминал, и это своего рода клиент / сервер. Есть подчиненные устройства pt, то есть терминал, с которого вы вводите текст, и ptmaster, принимающий ввод. У одного мастера pt (/ dev / ptmx) есть много подчиненных (/ dev / pts / *). Со страницы руководства на ptmx:

   Before  opening  the  pseudo-terminal slave, you must pass the master’s
   file descriptor to grantpt(3) and unlockpt(3).

   Once both the pseudo-terminal master and slave are open, the slave pro‐
   vides  processes  with an interface that is identical to that of a real
   terminal.

Возможно (возможно!) Возможно предположить идентичность терминалов, которую вы хотите предположить (о, черт, на этом этапе можно было бы просто сказать, что захватить), используя специально написанную программу, которая удобно игнорирует определенные меры безопасности, такие как предварительные наличие нужных файловых дескрипторов.

Вероятно, сейчас гораздо меньше работы просто признать поражение и потерять данные.

Вы пытались подключиться как root, указав имя сокета работающего экрана для screen? (Я лично не пробовал.)