Разрешение файла выполняется только

Как упомянуто Портативным способом найти inode число и Обнаружение chroot тюрьмы из, можно проверить ли inode количество / 2:

$ ls -di /
2 /

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

12
29.05.2013, 23:05
4 ответа

Вы нуждаетесь и в чтении и выполняете полномочия на сценарии, чтобы смочь выполнить его. Если Вы не можете считать содержание сценария, Вы не можете выполнить его также.

tony@matrix:~$ ./hello.world
hello world
tony@matrix:~$ ls -l hello.world
-rwxr-xr-x 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ chmod 100 hello.world
tony@matrix:~$ ls -l hello.world
---x------ 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ ./hello.world
bash: ./hello.world: Permission denied
10
27.01.2020, 19:54
  • 1
    Действительно, обновленный, чтобы отразить, что это верно для сценариев, который, рассматривая исходный вопрос, то, что я подозреваю, имеет место. –  EightBitTony 14.07.2011, 01:49

Если Вы позволяете другим пользователям выполнить программу, то они могут знать все, что программа делает, читаем ли программный файл или нет. Все, что они должны сделать, указать на отладчик (или подобная отладчику программа такой как strace). Двоичный исполняемый файл может работать, если это - исполняемый файл, и не читаемый (сценарий не может, потому что интерпретатор должен смочь прочитать сценарий), но это не дает Вам безопасности.

Если Вы хотите, чтобы другие смогли выполнить Вашу программу как черный квадрат, не позволяя им видеть точно, что делает программа, необходимо дать поднятые полномочия сценария: сделайте это setuid Вашему пользователю. Только корень может использовать средства отладки на setuid программах. Обратите внимание, что запись безопасных setuid программ не легка, и большинство языков не подходит; посмотрите Позволяют setuid на сценариях оболочки для большего количества объяснений. Если Вы собираетесь записать setuid программу, я настоятельно рекомендую Perl, который имеет режим (режим инфекции), это явно предназначается для создания безопасных setuid сценариев возможными.

6
27.01.2020, 19:54

Существует половина истины к предыдущим операторам. Можно установить сценарий так, чтобы это не было читаемо пользователем, но все еще исполняемо. Процесс немного вытянут, но это выполнимо путем создания исключения в/etc/sudoer так, чтобы пользователь мог запустить скрипт как самостоятельно временно, не будучи предложенным пароль. Пример ниже:

Некоторый сценарий я хочу совместно использовать с пользователем:

me@OB1:~/Desktop/script/$ chmod 700 somescript.pl
me@OB1:~/Desktop/script/$ ls -l somescript.pl
-rwx------ 1 me me 4519 May 16 10:25 somescript.pl

Сделайте сценарий оболочки, который называет 'somescript.pl', и сохраните его в/bin/:

me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me: 
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@

ДОПОЛНИТЕЛЬНЫЙ ШАГ Делает символьную ссылку на somescript.sh в/bin/:

sudo ln -s /bin/somescript.sh /bin/somescript

Удостоверьтесь, что сценарий оболочки читаем/исполняем пользователю (никакой доступ для записи):

sudo chmod 755 /bin/somescript.sh
me@OB1:/bin$ ls -l somescript*
lrwxrwxrwx 1 root root  14 May 28 16:11 somescript -> /bin/somescript.sh
-rwxr-xr-x 1 root root 184 May 28 18:45 somescript.sh

Сделайте исключение в/etc/sudoer путем добавления этих строк:

# User alias specification
User_Alias  SCRIPTUSER = me, someusername, anotheruser

# Run script as the user 'me' without asking for password
SCRIPTUSER ALL = (me) NOPASSWD: /home/me/Desktop/script/somescript.pl

ДОКАЗАТЕЛЬСТВО В ПУДИНГЕ:

someuser@OB1:~$ somescript
***You can run me, but can't see my private parts!***

someuser@OB1:~$ cat /home/me/Desktop/script/somescript.pl
cat: /home/me/Desktop/script/somescript.pl: Permission denied

Этот метод должен быть лучше, чем попытка запутать с Filter::Crypto или PAR::Filter::Crypto или Acme::Bleach который может быть инвертирован спроектированный решительным пользователем. То же идет для компиляции Вашего сценария к двоичному файлу. Сообщите мне, находите ли Вы что-то не так с этим методом. Для большего количества опытных пользователей можно хотеть удалить раздел User_Alias полностью и заменить SCRIPTUSER '%groupname'. Таким образом, можно управлять пользователями сценария с usermod команда.

12
27.01.2020, 19:54

Можно установить полномочия файла с командой chmod. И пользователь root и владелец файла могут установить полномочия файла. chmod имеет два режима, символьные и числовые.

Во-первых, Вы решаете, устанавливаете ли Вы полномочия для пользователя (u), группа (g), другие (o), или все три (a). Затем Вы или добавляете разрешение (+), удаляете его (-), или вытираете предыдущие полномочия и добавляете новый (=). Затем, Вы решаете, устанавливаете ли Вы разрешение (r) чтения, запишите разрешение (w) или выполните разрешение (x). Наконец, Вы скажете chmod, какие полномочия файла Вы хотите изменить.

Вот несколько примеров.

Вытрите все полномочия, но добавьте разрешение чтения для всех:

$ chmod a=r filename

После команды полномочия файла были бы-r - r - r--

Добавьте выполняют полномочия для группы:

$ chmod g+x filename

Теперь, полномочия файла были бы-r - r-xr-

Добавьте и запись и выполните полномочия для владельца файла. Отметьте, как можно установить больше чем одно разрешение одновременно:

$ chmod u+wx имя файла

После этого полномочия файла будут-rwxr-xr-

Удалите выполнить разрешение и от владельца и от группы файла. Отметьте, снова, как можно установить их обоих сразу:

$ chmod ug-x имя файла

Теперь, полномочия являются-rw-r - r--

Это - справочник для установки полномочий файла в символьном режиме:

Which user?
u   user/owner
g   group
o   other
a   all
What to do?
+   add this permission
-   remove this permission
=   set exactly this permission
Which permissions?
r   read
w   write
x   execute
-1
27.01.2020, 19:54
  • 1
    Очевидно из вопроса, что OP понимает, как использовать chmod. Это не отвечает на вопрос. –  Scott 18.02.2015, 22:12

Теги

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