树叶云linux教程:10.4 个人用户主页功能

如果想在系统中为每位用户建立一个独立的网站,通常的方法是基于虚拟网站主机功能来部署多个网站。但这个工作会让管理员苦不堪言(尤其是用户数量很庞大时),而且在用户自行管理网站时,还会碰到各种权限限制,需要为此做很多额外的工作。其实,httpd服务程序提供的个人用户主页功能完全可以以胜任这个工作。该功能可以让系统内所有的用户在自己的家目录中管理个人的网站,而且访问起来也非常容易。

第1步:在httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件,然后在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。

    [root@linuxprobe ~]# vim /etc/httpd/conf.d/userdir.conf 
     1 #
     2 # UserDir: The name of the directory that is appended onto a user's home
     3 # directory if a ~user request is received.
     4 #
     5 # The path to the end user account 'public_html' directory must be
     6 # accessible to the webserver userid. This usually means that ~userid
     7 # must have permissions of 711, ~userid/public_html must have permissions
     8 # of 755, and documents contained therein must be world-readable.
     9 # Otherwise, the client will only receive a "403 Forbidden" message.
     10 #
     11 <IfModule mod_userdir.c>
     12 #
     13 # UserDir is disabled by default since it can confirm the presence
     14 # of a username on the system (depending on home directory
     15 # permissions).
     16 #
     17 # UserDir disabled
     18 
     19 #
     20 # To enable requests to /~user/ to serve the user's public_html
     21 # directory, remove the "UserDir disabled" line above, and uncomment
     22 # the following line instead:
     23 # 
     24   UserDir public_html
     25 </IfModule>
     26 
     27 #
     28 # Control access to UserDir directories. The following is an example
     29 # for a site where these directories are restricted to read-only.
     30 #
     31 <Directory "/home/*/public_html">
     32 AllowOverride FileInfo AuthConfig Limit Indexes
     33 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
     34 Require method GET POST OPTIONS
     35 </Directory>

第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。

    [root@linuxprobe home]# su - linuxprobe
    Last login: Fri May 22 13:17:37 CST 2017 on :0
    [linuxprobe@linuxprobe ~]$ mkdir public_html
    [linuxprobe@linuxprobe ~]$ echo "This is linuxprobe's website" > public_html/index.html
    [linuxprobe@linuxprobe ~]$ chmod -Rf 755 /home/linuxprobe

第3步:重新启动httpd服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格),从理论上来讲就可以看到用户的个人网站了。不出所料的是,系统显示报错页面,如图10-9所示。这一定还是SELinux惹的祸。

图10-9 禁止访问用户的个人网站

第4步:思考这次报错的原因是什么。httpd服务程序在提供个人用户主页功能时,该用户的网站数据目录本身就应该是存放到与这位用户对应的家目录中的,所以应该不需要修改家目录的SELinux安全上下文。但是,前文还讲到了SELinux域的概念。SELinux域确保服务程序不能执行违规的操作,只能本本分分地为用户提供服务。httpd服务中突然开启的这项个人用户主页功能到底有没有被SELinux域默认允许呢?

接下来使用getsebool命令查询并过滤出所有与HTTP协议相关的安全策略。其中,off为禁止状态,on为允许状态。

    [root@linuxprobe ~]# getsebool -a | grep http
    httpd_anon_write --> off
    httpd_builtin_scripting --> on
    httpd_can_check_spam --> off
    httpd_can_connect_ftp --> off
    httpd_can_connect_ldap --> off
    httpd_can_connect_mythtv --> off
    httpd_can_connect_zabbix --> off
    httpd_can_network_connect --> off
    httpd_can_network_connect_cobbler --> off
    httpd_can_network_connect_db --> off
    httpd_can_network_memcache --> off
    httpd_can_network_relay --> off
    httpd_can_sendmail --> off
    httpd_dbus_avahi --> off
    httpd_dbus_sssd --> off
    httpd_dontaudit_search_dirs --> off
    httpd_enable_cgi --> on
    httpd_enable_ftp_server --> off
    httpd_enable_homedirs --> off
    httpd_execmem --> off
    httpd_graceful_shutdown --> on
    httpd_manage_ipa --> off
    httpd_mod_auth_ntlm_winbind --> off
    httpd_mod_auth_pam --> off
    httpd_read_user_content --> off
    httpd_run_stickshift --> off
    httpd_serve_cobbler_files --> off
    httpd_setrlimit --> off
    httpd_ssi_exec --> off
    httpd_sys_script_anon_write --> off
    httpd_tmp_exec --> off
    httpd_tty_comm --> off
    httpd_unified --> off
    httpd_use_cifs --> off
    httpd_use_fusefs --> off
    httpd_use_gpg --> off
    httpd_use_nfs --> off
    httpd_use_openstack --> off
    httpd_use_sasl --> off
    httpd_verify_dns --> off
    named_tcp_bind_http_port --> off
    prosody_bind_http_port --> off

面对如此多的SELinux域安全策略规则,实在没有必要逐个理解它们,我们只要能通过名字大致猜测出相关的策略用途就足够了。比如,想要开启httpd服务的个人用户主页功能,那么用到的SELinux域安全策略应该是httpd_enable_homedirs吧?大致确定后就可以用setsebool命令来修改SELinux策略中各条规则的布尔值了。大家一定要记得在setsebool命令后面加上-P参数,让修改后的SELinux策略规则永久生效且立即生效。随后刷新网页,其效果如图10-10所示。

    [root@linuxprobe ~]# setsebool -P httpd_enable_homedirs=on
    [root@linuxprobe ~]# firefox

图10-10 正常看到个人用户主页面中的内容

有时,网站的拥有者并不希望直接将网页内容显示出来,只想让通过身份验证的用户访客看到里面的内容,这时就可以在网站中添加口令功能了。

第1步:先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。

    [root@linuxprobe ~]# htpasswd -c /etc/httpd/passwd linuxprobe
    New password:此处输入用于网页验证的密码
    Re-type new password:再输入一遍进行确认
    Adding password for user linuxprobe

第2步:编辑个人用户主页功能的配置文件。把第31~35行的参数信息修改成下列内容,其中井号(#)开头的内容为刘遄老师添加的注释信息,可将其忽略。随后保存并退出配置文件,重启httpd服务程序即可生效。

    [root@linuxprobe ~]# vim /etc/httpd/conf.d/userdir.conf
    27 #
    28 # Control access to UserDir directories. The following is an example
    29 # for a site where these directories are restricted to read-only.
    30 #
    31 <Directory "/home/*/public_html">
    32 AllowOverride all
    #刚刚生成出来的密码验证文件保存路径
    33 authuserfile "/etc/httpd/passwd"
    #当用户尝试访问个人用户网站时的提示信息
    34 authname "My privately website"
    35 authtype basic
    #用户进行账户密码登录时需要验证的用户名称
    36 require user linuxprobe
    37 </Directory>
    [root@linuxprobe ~]# systemctl restart httpd

此后,当用户再想访问某个用户的个人网站时,就必须要输入账户和密码才能正常访问了。另外,验证时使用的账户和密码是用htpasswd命令生成的专门用于网站登录的口令密码,而不是系统中的用户密码,请不要搞错了。登录界面如图10-11所示。

图10-11 网站提示需要输入账户和密码才能访问

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(满),B群:340829(推荐),C群:463590(推荐),点此查看全国群。

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/190983.html<

(0)
运维的头像运维
上一篇2025-03-31 22:11
下一篇 2025-03-31 22:13

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注