похоже, что вы сказали Apache, чтобы требовать пароль для вашего веб-корня, но разве вы не использовали Apache, чтобы не требовать его для всех других каталогов?
Внутри вашего .htaccess (или в httpd.conf, они выполняют ту же работу), у вас, вероятно, есть что-то вроде того, что ниже (добавьте ссылку pastebin в ваш файл .htaccess, и я могу это сделать):
<Directory "/www/private">
Order allow,deny
Allow from all
Options Indexes
AuthType Basic
AuthName "Private Access"
AuthUserFile "/www/private/.htpasswd"
Require valid-user
</Directory>
Но это применимо ко всем каталогам в этот путь. Вы должны явно указать Apache иначе.
<Directory "/var/private/subdir">
Satisfy any
</Directory>
Вы можете использовать регулярные выражения с <DirectoryMatch "regex">, чтобы обобщить это, просто не забывайте защищать от выражений asdf.com/subdir/../.
UPDATE: Также стоит упомянуть, что хотя большая часть документации уже имеет директивы <Directory[Match]>, существуют также <Location[Match]> директивы, которые полезны в случае символических ссылок в базовой файловой системе.
Только по одной из ваших точек:
, но если процесс в данный момент выполняется в этом сеансе и поэтому не может запускаться sudo -kЭто относится к командной строке , если вы хотите что-то сделать, пока какой-то другой процесс запущен, вы можете нажать Ctrl + Z, чтобы приостановить процесс; вы снова получите доступ к текущему терминалу, сделайте все, что вам нравится. Когда вы закончите, вы можете ввести jobs, чтобы получить список процессов, рядом с ними. Введите fg 1 (например - и просто fg, если есть только одно задание), чтобы перезапустить процесс, подняв его на передний план. Аналогично, bg делать то же самое, но оставляя процесс в фоновом режиме.
Пример сеанса
$ sudo apt-get install hello
<CTRL+Z>
[1]+ Stopped sudo apt-get install hello
$ sudo -k
$ jobs
[1]+ Stopped sudo apt-get install hello
$ fg 1
Loading database...
....
Я нашел решение. поскольку мой поиск не показывал ничего подобного, и это частый вопрос: sudo хранит где-то в файловой системе (например, в / var / run / sudo), один каталог на имя пользователя, несколько файлов, которые работают как отметка времени , по одному файлу для каждого терминала. удалите эти файлы, и ваша система снова будет защищена. просто имейте в виду, что эти файлы видны только для root (в противном случае злоумышленник может прочитать отметку времени и установить время-часы обратно в точку, где они все еще были действительны - предоставление root-ls кому-либо опасно). поэтому в моем / etc / pm / sleep / и, возможно, также для заставки я запускаю:
rm -f /var/db/sudo/*/*
как root, конечно ...