LINUX.ORG.RU

Не запускаются скрипты: chmod +x не помогает, ^M нет, noexec не стоит

 , , , ,


0

1

На CentOS 8 (жаль нет возможности заменить на нормальный дистр) не запускаются никакие скрипты обычным способом.

cat ./scr.sh
#!/bin/sh
echo "hi"

chmod +x ./scr.sh
./scr.sh
bash: ./scr.sh: /bin/sh: bad interpreter: Permission denied

dos2unix ./scr.sh
./scr.sh
bash: ./scr.sh: /bin/sh: bad interpreter: Permission denied

sh ./scr.sh
hi

ls -al ./scr.sh
-rwxrwxr-x. 1 admin admin 20 Jan  9 16:42 ./scr.sh

mount | grep sda2
/dev/sda2 on / type ext4 (rw,relatime,seclabel)

Почему-то «обычным способом» скрипты не запускаются, но если добавить sh или bash перед именем скрипта - то всё работает.

Все разрешения стоят правильно, виндовых переводов строк в скрипте нет, раздел примаунчен без noexec. Что ещё может быть не так?

★★★★★

Ответ на: комментарий от anonymous

После dos2unix ничего не изменилось; xxd смогу прислать только завтра - но дело вряд ли в этом: запускаю хоть свои скрипты, хоть чей-то configure из популярной_библиотеки.tar.gz, результат одинаковый.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от legolegs

/bin/sh работает если запускать как /bin/sh ./scr.sh, и разрешения у него правильные.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Система практически свежая: кроме установки кучи всевозможных пакетов из офиц. репозитория, конфиги особо не правились.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Ну как бы ты сам сказал про SELinux. Проверь его журнал на наличие запретов запуска.

А как это сделать? В премудростях красношапки я мало соображаю, а панель SELinux Troubleshooting почему-то сегфолтится даже после переустановки.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Ты уже настолько запарафинился об амуде, что у тебя уже нигде не запускается.

anonymous
()
Ответ на: комментарий от legolegs

Лежит на разделе sda2 / в home у админа - /home/admin/scr.sh . Раздел ext4, примонтирован как rw,relatime,seclabel.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

К сожалению, логи в плане AVC оказались пусты. Кстати, выяснилось что под sudo или root скрипты запускаются нормально, только у обычных юзеров такая фигня. Права на sh и bash - 775, пробовал три семёрки ставить но и это не помогает.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от PunkoIvan

segfault at 18 ip 00007fc7ab7d8814 sp 00007ffde5796868 error 4 in libgirepository-1.0.so.1.0.0[7fc7ab7c7000+35000]

По-прежнему сыроват CentOS 8, спустя столько времени. Возможно, это хитрый план красношапки по избавлению от «нахлебников, не желающих платить».

SakuraKun ★★★★★
() автор топика
Последнее исправление: SakuraKun (всего исправлений: 2)
Ответ на: комментарий от Vsevolod-linuxoid

В логах ядра нашёл вот такую фигню, раньше её не показывало почему-то но с тех пор я апгрейдил ядро:

tpe: Denied untrusted exec of /home/admin/scr.sh (uid:1000) by /usr/bin/bash (uid:1000),
    parents: /usr/bin/bash (uid:1000), /usr/libexec/gnome-terminal-server (uid:1000),
        /usr/lib/systemd/systemd (uid:1000), /usr/lib/systemd/systemd (uid:0).
      Deny reason: directory uid not trusted
tpe: If this exec was legitimate and you cannot correct the behavior,
    an exception can be made to allow this by running;
        setfattr -n security.tpe -v "soften_exec:soften_mmap" /home/admin/scr.sh
    . To silence this message, run; sysctl tpe.log_verbose = 0

Попробовал - и вправду, работает! Осталось разобраться, как её отключить.

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun
Deny reason: directory uid not trusted

 — может из /usr/local/bin сработает?

И вот это

"soften_exec:soften_mmap"
 — похоже на выставление свойств SElinux на файл, погугли, как это на постоянку сделать.

Ну и SELinux можно отключить, но это плохой вариант.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Нашёл хорошее описание этой фигни здесь - https://morfikov.github.io/post/modul-tpe-trusted-path-execution-dla-kernela-linux/ Добавил в /etc/sysctl.conf строки

tpe.softmode = 1
tpe.log = 0
tpe.log_verbose = 0

теперь скрипты запускаются из любой директории обычными пользователями и в dmesg не ругается :)

SakuraKun ★★★★★
() автор топика
Последнее исправление: SakuraKun (всего исправлений: 1)
Ответ на: комментарий от SakuraKun

Какой порядочный лоровец - нормально задал вопрос, сам решил проблему и запостил решение. Все бы так! Добра тебе.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.