AIX и служба демона

У меня есть еще один ответ на вопрос, который мучил меня, прежде чем я разобрался с проблемой. Проблема заключается в ошибке в ОС Fedora и ее производных, как я позже понял. Если проблема не соответствует принятому ответу и/или вы не используете Fedora, RedHat, Korora и т. д., то это вам не поможет.

Проблема

Как сказал пользователь slm, запуск strace даст вам представление о проблеме, но в этом конкретном случае ошибки вывод отличается:

$ strace xauth list
 ...
  stat64("/home/USER/.Xauthority-c", 0xbff23280) = -1 ENOENT (No such file or directory)
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
  rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
  rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
  nanosleep({2, 0}, 0xbff232c8)           = 0
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
  rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
  rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
  nanosleep({2, 0}, 0xbff232c8)           = 0
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied) 
 ...

Для ясности: это означает, что код возврата EACCES означает отказ в доступе. Это отличается от проблемы пользователя slm, где у него был код возврата EEXIST, что означает, что файл существует. Итак, для кода возврата EACCES, очевидно, первое, что вы проверяете, это :, настроены ли мои домашние разрешения, чтобы я мог писать в свой домашний каталог? Сначала вы должны убедиться, что у вас есть флаг записи в вашем домашнем каталоге для вашего собственного пользователя. Если вы это сделаете, то вы можете стать жертвой ошибки, описанной ниже.

Ошибка

С помощью пары поисковых запросов в Google я, наконец, смог найти человека с похожей проблемой, и это привело меня к отчету об ошибке Fedora. Для тех из вас, кому интересно об этом прочитать:https://bugzilla.redhat.com/show_bug.cgi?id=772992

Обходной путь

Решение проблемы:

#verify you're not crazy
$ xauth list
  /usr/bin/xauth:  timeout in locking authority file /home/USER/.Xauthority
#use restorecon to reset it all
$ /sbin/restorecon -v -v /home/USER/.Xauthority 
$ /sbin/restorecon -v -v -R /home/USER/
#log out of the remote system
$ exit

Когда вы вернетесь по SSH, на этом этапе все должно быть в порядке, и вы сможете снова успешно перенести сеанс X -.


РЕДАКТИРОВАТЬ (и другие альтернативные обходные пути):

Чтобы быть максимально полным, другие пользователи указали в отчете об ошибке, что указанное выше исправление не сработало для них -оно сработало для меня. Другой попыткой обойти проблему была (Я лично не проверял этот обходной путь):

# setsebool -P use_nfs_home_dirs 1

Другой человек что-то упоминает о GDM, о чем я ничего не знаю. Если это относится к вам, я рекомендую прочитать его сообщение в BugZilla и посмотреть, означает ли что-нибудь его комментарий для вас.

1
22.01.2020, 13:16
1 ответ

I have init.d script

Не начинайте оттуда, особенно если это не -система AIX. Это почти наверняка мусор, который выведет вас на садовую дорожку.

Просто запустить rcсценарий под диспетчером служб — это грех, который люди совершают в операционных системах Linux, использующих systemd, но это долгое время было грехом, особенно в AIX, который имел надлежащее управление службой с 1990 г.

Используйте команду mkssysдля определения вашей подсистемы, которую вы затем можете запускать и останавливать, как вы сказали, с помощью startsrcи stopsrc. Используйте rmssys, чтобы удалить его, если вы когда-нибудь захотите это сделать. Используйте опцию -sдля всего этого с уникальным именем для вашей подсистемы.

Скорее всего, вы хотите -Sс mkssysи -R. Просто определите путь к команде и аргументы для вашего процесса-демона, а также идентификатор пользователя, от имени которого он должен работать, и соответствующим образом используйте параметры -p, -a, -u.

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

1
28.04.2021, 23:25

Теги

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