Forum Webscript.Ru
Программирование => Perl => Тема начата: sickboy от 24 Апреля 2007, 21:01:57
-
$ pwd
/home/www/saitig
$ ls -la
total 32
drwx--x--- 7 saitig apache 376 Apr 24 17:38 .
drwxr-x--x 66 root adm 2600 Apr 24 20:37 ..
$ perl -e "use Cwd; print cwd();"
/bin/pwd: cannot open directory `..\': Permission denied
На другой машине, с точно такими же правами:
$ perl -e "use Cwd; print cwd();"
/home/www/saitec2
работает.
Что может быть в правах неправильно?
-
Нет прав запускать /bin/pwd. Виртуалхостинг?
-
NeoNox:
Нет прав запускать /bin/pwd.
У кого, у пользователя?
Но ведь он может исполнить pwd.
Более того, perl -e "use Cwd; print cwd();" не работает, только если он находится в HOME, если подняться выше, работает.
На другой машине, с точно такимиже правами на HOME, эта команда работает.
Виртуалхостинг?
Да.
-
Скорее всего Perl запускается от пользователя perl, соответственно у него нет прав на запуск /bin/pwd. Обратись к администрации, это их проблема.
-
NeoNox:
Скорее всего Perl запускается от пользователя perl, соответственно у него нет прав на запуск /bin/pwd.
Так пользователь из шелла запускает эту команду, при этом не используется никой suid\'ый wrapper.
Обратись к администрации, это их проблема.
В данном случае я сам администрация, машинка для клиента делается.
-
От какого пользователя запускается перловый процесс который использует Cwd?
-
От владельца, т.е. обычный непривелигированный юзер.
Но, я уже похоже разобрался.
Ошибка возникает из-за разницы в реализации самой команды pwd, в одном случае она использует системный вызов open, в другом getcwd (там, где работает). Соответственно для open необходимы помимо прав исполнения еще и чтение.
-
Какая система с неработающим pwd?
-
Linux Gentoo 2006