Как это возможно, чтобы иметь возможность выполнять двоичный файл с разрешением 755
, он должен быть в списке sudo'ers? Я пытаюсь запустить программу пользователем, не являющимся пользователем sudo. Этого не происходит, но если я выполняю через sudo или как root, он работает как надо.
Разрешение на файл 755 root root
.
Весь каталог программ находится в /opt
.
Некоторые подробности:
Сервер Ubuntu 12.04, 64-битный
Программное обеспечение в основном представляет собой старую 32-битную версию Firefox 1.9, кое-что модифицированное для подключения к серверу Tomcat.
обновить
пользователь, не указанный в списке sudo'ers, может запустить программу.
только мой пользователь sudo не может, то есть, просто запустив ./program
,
sudo ./programm
, работает нормально.
Я бы попробовал переместить файл в группу, отличную от root ... Если вы прочитаете это: https://help.ubuntu.com/community/FilePermissions
и вы -ll и видеть XXXX root root
Означает, что ваш файл / программа принадлежит «root» и способен на 755 членов «корневой» группы. Поэтому либо
1) добавьте других пользователей без полномочий root в корневую группу, либо 2) создайте совершенно новую группу и назначьте эту группу для файлов / программ, которые вы запускаете.
Здесь для создания групп и прочего: https://wiki.archlinux.org/index.php/Users_and_Groups
Надеюсь, это поможет!
Наиболее вероятная причина заключается в том, что программа, когда-то работавшая от имени обычного пользователя, пытается прочитать какой-либо файл или выполнить какую-либо операцию, которая зарезервирована для привилегированных пользователей (в основном, root).
Например, если ваша программа пытается использовать (привязку) к одному из нижних интернет-портов (менее 1024), для этого необходимы права суперпользователя (1). Или попытайтесь прочитать файл или используйте библиотеку, которая помечена только для пользователя root.
Решение hammer (2) состоит в том, чтобы отметить программу set-uid root (SUID-root). Это довольно опасно, его следует избегать, кодируя программу, чтобы она не нуждалась в ней, и ее практически невозможно распространять - я бы никогда не принял программы set-uid из неофициальных источников на моем компьютере, и даже тогда я не надену они тоже не нравятся. Я отправляю ответ, потому что я думаю, что хорошо знать, что они существуют.
Поэтому обеспечение того, чтобы все службы / файлы, которые использует программа, было доступно для нее, является правильным решением, в противном случае, вероятно, программа должна запускаться с правами root со всеми вытекающими последствиями.
Если вы сделаете программный корень set-uid, любой может его запустить, и он будет работать как root. Это будет работать только для двоичного исполняемого файла ; бит set-uid не работает для сценариев (shell, python или что-либо еще).
Если вы действительно хотите запустить скрипт от имени пользователя root, вам нужна оболочка, как показано в этого ответа на stackoverflow . Но прежде чем это сделать, прочитайте все вопросы и обязательно поймите (не очень) тонкие моменты в отношении безопасности. Если вы действительно хотите, чтобы этот сценарий выполнялся как root для каждого пользователя, я бы выбрал для редактирования sudoers
, чтобы они могли запускать его с sudo
без запроса пароля . В этом ответе на stackoverflow перечислено много идей.
Пример использования set-uid : я делаю копию cat
(вывод содержимого файла на терминал), меняю ее на владение root и пытаюсь прочитать файл, принадлежащий пользователю root и который может читать только этот пользователь root:
(0)asus-romano:~/tmp/suidtest% cp /bin/cat .
(0)asus-romano:~/tmp/suidtest% ls -l ./cat
-rwxr-xr-x 1 romano romano 46884 Nov 21 09:49 ./cat
(0)asus-romano:~/tmp/suidtest% sudo chown root.root ./cat
(0)asus-romano:~/tmp/suidtest% ls -l
total 48
-rwxr-xr-x 1 root root 46884 Nov 21 09:49 cat
(1)asus-romano:~/tmp/suidtest% ./cat /etc/shadow- > /dev/null
./cat: /etc/shadow-: Permission denied
Теперь я изменил программу на suid-root (обратите внимание на s
в флагах разрешений):
(0)asus-romano:~/tmp/suidtest% sudo chmod u+s ./cat
(0)asus-romano:~/tmp/suidtest% ls -l ./cat
-rwsr-xr-x 1 root root 46884 Nov 21 09:49 ./cat
(0)asus-romano:~/tmp/suidtest% ./cat /etc/shadow- > /dev/null
Нет ошибок ...
(1) хорошо, в Linux есть тонкодисперсные привилегии, называемые возможностями , но они редко используются и довольно сложны ...
(2) когда у вас есть молоток, все начинает выглядеть как гвозди ...