Могу ли я создать общедоступный каталог в частном каталоге?

PECL HTTP 2.0 +

Последняя версия pecl_http представляет http пространство имен. так HttpRequest больше не будет доступно. Следуйте документации php для использования пространства имен и контроля предоставленный phpunit каталог для использования и примеров.

$req = new http\Client\Request();

Или более предпочтительный путь, который допускает назад поддержку

use http\Client\Request as HttpRequest;
$req = new HttpRequest();

Еще

Иногда расширения PECL не могли бы быть установлены правильно. Это может произойти, если Ваше смешивание pacman пакеты и pecl расширения, но это очень редко. Я рекомендую установить pecl_http вручную.

Источник захвата

shell ~> curl -o pecl_http.tar.gz http://pecl.php.net/get/pecl_http
shell ~> tar zvxf pecl_http.tar.gz
shell ~> cd pecl_http

Настройте, скомпилируйте, и тест

shell ~/pecl_http> phpize
shell ~/pecl_http> ./configure
shell ~/pecl_http> make
shell ~/pecl_http> make test

Установка

shell ~/pecl_http> make install

Это произведет каталог http.so будет установлен. В моем случае это /usr/lib/php//. Полезное примечание.

php.ini & Test

Править php.ini файл, и добавляет http.so расширение.

shell ~> php -m | grep http

Если http не отображен, переиздайте php.ini, и полный путь расширений;

extension=/usr/lib/php//http.so
20
07.08.2015, 17:06
3 ответа

Выполните следующие команды ниже

hostnamectl
hostnamectl set-hostname servername.domain.com
hostnamectl
systemctl restart sshd.service

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install nginx
systemctl enable nginx.service
systemctl start nginx.service

systemctl stop httpd.service  or systemctl disable httpd
yum remove httpd
systemctl disable httpd.service

systemctl enable nginx.service
systemctl start nginx.service

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

http ://your _ server _ IP _ address/

-121--150329-

С этими разрешениями невозможно достичь поставленной цели. Чтобы попасть в каталог c , необходимо разрешить всем остальным пользователям проходить через каталог b , что делается путем предоставления разрешения на выполнение для этого каталога. Если для /a/b установлен режим 711, можно достичь желаемого, поскольку вы предоставляете доступ к каталогу, но отказываете в чтении и записи. Но имейте в виду, что, хотя другие пользователи не могут перечислять файлы в /a/b , они могут иметь доступ к файлам, если угадают, что имя и файлы имеют достаточно открытые разрешения.

-121--22110-

Можно. Необходимо просто установить исполняемый бит в каталоге /a/b . Это не позволит быть увидеть что-либо в b , но вы все равно сможете сделать все, если перейдете непосредственно в a/b/c .

% mkdir -p a/b/c
% chmod 711 a/b
% sudo chown root a/b
% ll a/b
  ls: cannot open directory a/b: Permission denied
% touch a/b/c/this.txt
% ls a/b/c
  this.txt

Убедитесь, что, хотя другие пользователи не могут перечислить содержимое /a/b , они могут получить доступ к файлам в этом каталоге, если угадают имя файла.

% echo hello | sudo tee a/b/f
% cat a/b/f
hello
% cat a/b/doesntexist
cat: a/b/doesntexist: No such file or directory

Поэтому не забудьте сохранить соответствующие разрешения (без группы/мира) для всех других файлов/каталогов в каталоге b , так как это позволит избежать этой оговорки.

34
27.01.2020, 19:44

С такими разрешениями ты не сможешь достичь своей цели. Для того, чтобы добраться до каталога c, вы должны позволить всем остальным пользователям пройти через каталог b, что делается давая разрешение на выполнение для этого каталога. С помощью /a/b, установленного в режим 711, вы можете достигнуть того, что вы хотите, так как вы даете разрешение на обход каталога, но запрещаете чтение и запись. Но имейте в виду, что хотя другие пользователи не могут перечислять файлы в /a/b, они могут получить доступ к файлам, если они угадают имя и файлы имеют достаточные открытые права.

9
27.01.2020, 19:44

Если пользователь не может получить доступ к / a / b , то он не сможет получить доступ ни к одному файлу в / a / b / c . Разрешения на / a / b / c не имеют значения, поскольку обход каталога останавливается на / a / b .

Если все, что вам нужно, - это запретить отображение каталога / a / b , но вы не против, если пользователи обращаются к файлам в / a / b , если они угадают имя файла, то вы можете сделать / a / b исполняемым, но не читаемым.В каталоге разрешение на чтение контролирует только список содержимого каталога, а разрешение на выполнение контролирует доступ к записям этого каталога.

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
… contents of /a/b/c …

Если вы не хотите, чтобы другие пользователи имели доступ к файлам в / a / b , кроме / a / b / c , вы можете открыть / a / b / c через другое представление, через крепление привязки .

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
… contents of /a/b/c …
3
27.01.2020, 19:44

Теги

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