This is the old XigmaNAS forum in read only mode,
it will taken offline by the end of march 2021!



I like to aks Users and Admins to rewrite/take over important post from here into the new fresh main forum!
Its not possible for us to export from here and import it to the main forum!

Аутентификация на вебсервере

Russian community

Moderators: alexey123, MikeMac

Forum rules
Set-Up GuideFAQsForum Rules
Post Reply
koch
NewUser
NewUser
Posts: 4
Joined: 03 Sep 2012 11:43
Status: Offline

Аутентификация на вебсервере

Post by koch »

Заметил, что при включенной аутентификации на сервисе Webserver, данные о пользователях берутся из файла .websrv_htpasswd лежащего в корневой директории веб-сервера. При этом в данный файл попадают все пользователи, зарегистрированные в NAS4Free и все они могут логиниться в директорию, требующую авторизации. За формирование данного файла отвечает скрипт сервиса /etc/rc.d/websrv_htpasswd. Я немного доработал данный скрипт, теперь он выгружает для авторизации только пользователей, которые включены в группу www. Может кому и пригодится.

Code: Select all

#!/bin/sh
#
# Part of NAS4Free (http://www.nas4free.org).
# Copyright (c) 2012-2013 The NAS4Free Project <info@nas4free.org>.
# All rights reserved.
#
# Portions of freenas (http://www.freenas.org).
# Copyright (c) 2005-2011 Olivier Cochard-Labbe <olivier@freenas.org>.
# All rights reserved.
#

# PROVIDE: websrv_htpasswd
# REQUIRE: userdb DAEMON
# XQUERY: -i "count(//websrv/enable) > 0 and count(//websrv/authentication) > 0" -o "0" -b
# RCVAR: websrv_htpasswd

. /etc/rc.subr
. /etc/configxml.subr

if configxml_isset //websrv/authentication; then
        # Defaults
        documentroot=`configxml_get "//websrv/documentroot"`
        htpasswdfile=".websrv_htpasswd"
        htpasswd="${documentroot}/${htpasswdfile}"

        echo "Generating ${htpasswdfile}."

        # Generate the htpasswd file used by websrv.
        /bin/cat /dev/null > "${htpasswd}"

        # Add configured users.
        /usr/local/bin/xml sel -t -m "//access/user" \
                -v "concat(login,' ',password)" \
                -i "position() <= last()" -n -b \
                ${configxml_file} | /usr/local/bin/xml unesc | \
                while read _login _password; do
                        # select only www group
                        if /usr/bin/id "${_login}" | /usr/bin/grep -q "\(www\)"
                        then
                                if [ "${_password}" != "" ]; then
                                        _password_md5=`/usr/sbin/mkpw -e md5 "${_password}"`
                                else
                                        _password_md5="*"
                                fi
                                echo "${_login}:${_password_md5}" >> "${htpasswd}"
                        fi
                done

        /bin/chmod 0600 "${htpasswd}"
        /usr/sbin/chown www:www "${htpasswd}"
fi

Post Reply

Return to “Российская”