Почему chmod не работает в этом случае?


1

Я пытаюсь установить небольшой веб-сервер для личного использования. У меня есть фодлер, /srv/http/cgi-bin/который я хочу редактировать как пользователь, а не как суперпользователь. Я попытался chmod, как упомянуто здесь . Вот результат:

sudo chmod 755 /srv/http/cgi-bin/ -R
[yotam@myhost ~]$ echo "h" >> /srv/http/cgi-bin/h.py
bash: /srv/http/cgi-bin/h.py: Permission denied

Изменить:
Вот некоторые данные из-за комментариев и ответов:

[yotam@myhost ~]$ sudo chmod 760 -R /srv/http/cgi-bin 
Password: 
[yotam@myhost ~]$ echo "hh" >> /srv/http/cgi-bin/h.py
bash: /srv/http/cgi-bin/h.py: Permission denied
[yotam@myhost ~]$ ls -ld /srv/http/cgi-bin
drwxrw---- 2 root root 4096 May 20 15:54 /srv/http/cgi-bin

Также сервер является рабочим столом Ubuntu под управлением apache2. Насколько я могу судить, я не сдерживал ни одну из пользовательских настроек, поэтому все они должны быть параметрами по умолчанию.


вы можете ls -l /srv/http/cgi-bin/h.py?

Попробуйте ls -ld /srv/http/cgi-binи ls -l /srv/http/cgi-bin/h.pyвставьте результат. У вас проббалы есть -Rфлаг не в том месте. Это должно прийти первым.
МКБ

1
это в основном зависит от того, является ли это GNU CHMOD или BSD CHMOD. если это bsd chmod, то он находится не в том месте, но chmod должен был произойти сбой с помощью «chmod: -R: нет такого файла или каталога», тогда как gnu chmod должен был

Простой ответ - если я просто скажу вам сделать chmod 777, но это будет очень безответственный ответ. Чтобы правильно ответить на ваш вопрос, не рискуя безопасностью своего сервера, вам нужно знать пару вещей о существующей конфигурации сервера. Какова группа пользователей процесса веб-сервера (предположительно Apache)? Какова пользовательская группа пользователя, от имени которого работает процесс Apache? Должен ли веб-сервер иметь возможность редактировать этот файл, например, от имени веб-пользователя? А какая группа пользователей у вашего текущего пользователя? Кто является владельцем и группой файла?
Ли Райан

Ваше понимание того, что означают разрешения, кажется неуместным. У тебя sudo chmodотлично работает; но это дает владельцу (видимо root) разрешение на запись, а не вам. Не ясно, как именно это решить; Мое предложение было бы скопировать файл, отредактировать cooy, использовать, sudoчтобы заменить оригинал вашей отредактированной версией.
tripleee

Ответы:


1

Строка режима кажется неправильной. Строка режима 755 означает, что

  • Владелец файла может читать (4), писать (2) и выполнять (1) - 4 + 2 + 1 = 7
  • Любой член группы файла может прочитать (4) и выполнить (1) - 4 + 1 = 5
  • Любой другой может прочитать (4) и выполнить (1) - 4 + 1 = 5

Похоже, что вы хотите chmod -R 766 /src/http/cgi-bin, но это похоже на очень небезопасную настройку разрешений ...


2
на самом деле это небезопасно, было бы лучше поиграть с группами или пользователями (например, "chown yotam: www-data h.py" и "chmod 775 h.py" или наоборот "adduser yotam www-data" и пусть разрешение как есть)

Спасибо за ваш ответ. Я попробовал это без улучшения.
Йотам

0

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

sudo chown -R yotam /srv/http/cgi-bin/ 

редактировать файл (как пользователь, а не как суперпользователь, как вам требуется)

sudo chown -R root /srv/http/cgi-bin/

Конечно, я могу сделать это. Я не хочу Это еще одна вещь, чтобы сделать. Более того, это должно работать. Я мог бы также создать ссылку на файл в других папках ...
Yotam

смена владельца безопаснее, чем смена разрешений, и многие веб-серверы не следуют по символическим ссылкам.
пицца
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.