libstdc ++ 6: разрывы: libboost-date-time1.54.0

Ответ (или, по крайней мере, запускается ]) в fs / proc / base.c (не изменилось, по крайней мере, с версии ядра 3.12 до версии 4.2)

742 static int proc_pid_permission(struct inode *inode, int mask)
743 {
744         struct pid_namespace *pid = inode->i_sb->s_fs_info;
745         struct task_struct *task;
746         bool has_perms;
747 
748         task = get_proc_task(inode);
749         if (!task)
750                 return -ESRCH;
751         has_perms = has_pid_permissions(pid, task, 1);
752         put_task_struct(task);
753 
754         if (!has_perms) {
755                 if (pid->hide_pid == 2) {
756                         /*
757                          * Let's make getdents(), stat(), and open()
758                          * consistent with each other.  If a process
759                          * may not stat() a file, it shouldn't be    seen
760                          * in procfs at all.
761                          */
762                         return -ENOENT;
763                 }
764 
765                 return -EPERM;
766         }
767         return generic_permission(inode, mask);
768 }

Приведенный выше код является отправной точкой для определения наличия конкретного / proc / PID запись существует или нет. Когда hide_pid установлен в 2, он возвращает -ENOENT , если у вас нет необходимых разрешений. Разрешения проверяются с помощью:

has_pid_permissions () ptrace_may_access () __ ptrace_may_access ()

__ ptrace_may_access () запрещает доступ, потому что процесс не является "дампируемым", поскольку он был создан из нечитаемого исполняемого образа, как определено во время создания процесса:

setup_new_exec () would_dump ()

1118 void would_dump(struct linux_binprm *bprm, struct file *file)
1119 {
1120         if (inode_permission(file_inode(file), MAY_READ) < 0)
1121                 bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP;
1122 }

0
01.05.2018, 21:54
1 ответ

Вы используете более новую версию libstdc++6, чем предусмотрено вашим дистрибутивом. Если вы хотите правильно использовать пакеты своего дистрибутива, вам следует вернуться к:

sudo apt install libstdc++6=4.8.4-2ubuntu1~14.04.4
0
28.01.2020, 04:24

Теги

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