У меня есть еще один ответ на вопрос, который мучил меня, прежде чем я разобрался с проблемой. Проблема заключается в ошибке в ОС 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 и посмотреть, означает ли что-нибудь его комментарий для вас.
I have init.d script
Не начинайте оттуда, особенно если это не -система AIX. Это почти наверняка мусор, который выведет вас на садовую дорожку.
Просто запустить rc
сценарий под диспетчером служб — это грех, который люди совершают в операционных системах Linux, использующих systemd, но это долгое время было грехом, особенно в AIX, который имел надлежащее управление службой с 1990 г.
Используйте команду mkssys
для определения вашей подсистемы, которую вы затем можете запускать и останавливать, как вы сказали, с помощью startsrc
и stopsrc
. Используйте rmssys
, чтобы удалить его, если вы когда-нибудь захотите это сделать. Используйте опцию -s
для всего этого с уникальным именем для вашей подсистемы.
Скорее всего, вы хотите -S
с mkssys
и -R
. Просто определите путь к команде и аргументы для вашего процесса-демона, а также идентификатор пользователя, от имени которого он должен работать, и соответствующим образом используйте параметры -p
, -a
, -u
.
Ваш скрипт rc
даст вам подсказку относительно пути к команде и аргументов, но это, вероятно, будет скрыто под кучей переменных оболочки и прочего.Это, пожалуй, единственная информация в скрипте rc
, которая будет вам полезна.