首页
关于本博客
友情链接
推荐
linux/shell
Search
1
LEDE官方固件安装中文语言包的方法
11,083 阅读
2
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
9,170 阅读
3
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
8,142 阅读
4
一次OpenVPN交叉编译笔记
6,651 阅读
5
利用iptables的string模块来屏蔽域名(关键词匹配)
6,101 阅读
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
互联网应用
IP地址段汇总
登录
Search
标签搜索
nginx
openvpn
cloudflare
seafile
iptables
openwrt
openssl
SSH
linux
lede
letsencrypt
openvpn配置模板
ftp
nas
vsftpd
seafile服务器
Linux启动脚本
ddns
seafile网盘
CentOS
自渡
累计撰写
71
篇文章
累计收到
1
条评论
首页
栏目
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
互联网应用
IP地址段汇总
页面
关于本博客
友情链接
推荐
linux/shell
搜索到
2
篇与
nas
的结果
2018-11-22
企业NAS部署(二)之实现用户自助修改密码
搭建好nas后,问题又来了,就是用户密码问题。之前部署NAS,用户密码都是在命令行下导入的,修改密码也只能通过命令行,要让用户使用Linux命令行来修改或者重置密码,那是不可能的。而我唯一能想到的,就是用php写一个web页面,通过表单提交的方式,让php来替用户执行shell命令,达到自助修改密码的目的。PHP代码<?php function replaceSpecialChar($strParam){ $regex = "/\ |\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\,|\.|\/|\;|\'|\`|\-|\=|\\\|\|/"; return preg_replace($regex,"",$strParam); } ?> <html> <head> <meta charset="utf-8"> <title>NAS密码自助修改页面</title> </head> <body bgcolor="#CCFFCC"> <br><br> <p><center><h2>NAS密码自助修改</h2></center></p> <form action="changepass.php" method="POST" submit=""><center> <p><span>NAS用户名:</span><input type="text" name="username" placeholder="用户名"></p> <p><span>NAS新密码:</span><input type="password" name="passwd" placeholder="新密码"></p> <p><button>修改</button></p> </center></form> <br><br> <p><h2>操作说明</h2></p> <li>请勿使用特殊字符作为账户名或密码,使用特殊字符将导致密码错误。</li> <li>该系统仅可修改已注册用户的密码,无法添加新用户。</li> <?php $username=$_POST["username"]; $username=replaceSpecialChar($username); $passwd=$_POST["passwd"]; $passwd=replaceSpecialChar($passwd); if (!$_POST["username"]){ echo ""; }elseif (!$_POST["passwd"]){ echo ""; }else{ exec("(sudo echo ".$passwd.";echo ".$passwd.") | sudo smbpasswd -s -a ".$username.""); echo "<br><strong>操作提示:</strong>修改成功,当前用户名".$username."对应的密码已被修改为".$passwd.",请牢记。"; } ?> </body> </html>使用说明要求的环境:php+nginx,关于二者的编译与安装,在本站https://www.zavierlab.com/post/49.html这个页面里已有详细说明,不再重复写。通过编译安装的php,其配置文件在/usr/local/php/etc/php.ini里面,要想使用php执行shell命令,就必须确保配置里面exec函数没有被禁用。查看办法是打开该配置文件,找到disable_function = 这一行(一般在305行),等号后面的函数表示被禁用的函数。该代码内使用到了sudo命令,所以必须给php使用的用户适当的sudo免密码权限,以确保能够正常执行echo和smbpasswd命令。假设php是以www用户身份运行的,则必须给www用户适当的sudo权限,方法是:使用vi在/etc/sudoers.d/下创建一个名为www的文件并编辑vi /etc/sudoers.d/www 加入以下内容 #分别设置echo和smbpasswd命令的别名 Cmnd_Alias CHANGE_SMBPASS = /usr/bin/smbpasswd Cmnd_Alias ECHO = /bin/echo #设置www用户在执行smbpasswd和echo命令时,无需密码 www ALL=(ALL) NOPASSWD:CHANGE_SMBPASS,ECHO 编辑后保存即可生效。接下来还需要用nginx配置web服务器并对php代码进行解析,配置如下:现在/home/wwwroot/下创建一个changenaspwd目录,将该php文件传入目录内,且将该文件命名为index.phpmkdir -p /home/wwwroot/changenaspwd 在/usr/local/nginx/conf/vhost/下创建一个文件,文件名自定义,扩展名必须为.confvi /usr/local/nginx/conf/vhost/changenaspwd.conf配置文件如下:server { listen 80 default; access_log /home/wwwlogs/changenaspwd.log; root /home/wwwroot/changenaspwd; index index.php; location ~ [^/]\.php(/|$) { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } }保存后,同时启动php和nginxservice nginx start service php-fpm start
2018年11月22日
1,591 阅读
0 评论
0 点赞
2018-11-22
企业NAS部署(一)之基础配置
最近在帮企业部署内网网络存储(nas)系统,方便不同部门之间通过内网共享文件。Linux下的samba软件,能够很好地代替windows共享来完成该项目。服务器信息操作系统:CentOS 6.10硬盘:128G SSD+1TB HDD安装相关软件使用yum安装sambayum -y install samba在配置NAS之前关闭SELinux以及在iptables放行相关端口,或者关闭iptables,由于在内网,无需防火墙,因此我直接清空了自带的iptables规则setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config iptables -F service iptables saveSamba安装完毕后,默认的配置文件在/etc/samba/smb.conf,所有的共享参数均在此配置。首先是编辑/etc/samba/smb.conf,通过nano或者vi和WinSCP皆可,先编辑[global]全局选项[global] workgroup = WORKGROUP #工作组名,win下默认是WORKGROUP server string = Samba Server For Linux #自定义字符串,用于描述服务器 log file = /var/log/samba/log.%m #生成日志 max log size = 50 #指定日志大小 security = user #安全级别,这里表示所有用户均需要通过验证才可访问 passdb backend = smbpasswd #密码认证方式,有多种选项,这里选择smbpasswd方便后期员工自助修改密码 smb passwd file = /etc/samba/smbpasswd #这里指定了账户密码的存放文件路径 max connections = 0 #0表示无限制连接,也可手动指定一个数值来限制连接数 load printers = no #加载打印机共享,这里不设定打印机全局选项配置完毕后,就可以开始配置共享目录了,首先创建一个目录,专门用于存放NAS文件mkdir -p /media/samba编辑配置文件smb.conf中的文件夹选项,另起一行,示例如下#客户端看到的文件夹名称 [部门1] #该共享文件夹在服务器中对应的真实目录 path = /media/samba/部门1 #对该共享具有读取权限的用户 valid users = user1 user2 user3... #用户创建的文件和目录的默认权限 create mask = 0755 directory mask = 0755 #在首页是否隐藏,yes为不隐藏,no为隐藏 browseable = yes #对该共享具有写入权限的用户 write list = user1 user2 user3... #对该共享具有完全控制权限的用户 admin users = user1 user2 user3... #是否允许访客访问,yes为允许,no为禁止 guest ok = no [部门2] path = /media/samba/部门2 valid users = user1 user2 user3... create mask = 0755 directory mask = 0755 browseable = yes write list = user1 user2 user3... admin users = user1 user2 user3... guest ok = no #可根据实际需求,在配置内继续添加其他共享 ...创建真实目录mkdir -p /media/samba/部门1 mkdir -p /media/samba/部门2因为samba用户认证是使用本地用户名+smb独立密码的形式来认证,即用户名必须在系统内存在,所以我创建了一个名为smbuser的组,然后将公司员工的账号批量导入。在设置NAS密码时,使用的是smbpasswd,smbpasswd是一个交互式命令,其使用方法如下:smbpasswd -a 用户名 New password:(输入密码,密码不会显示在此处)因为这是一个交互式命令,所以给批量设置默认密码带来了许多麻烦,而幸好有expect命令来解决这个交互的问题。批量导入方法如下:安装expectyum -y install expect写一个批量导入脚本#!/usr/bin/expect spawn smbpasswd -a 用户1 expect "*password:" send "用户1的密码\r" expect "*password:" send "用户1的密码\r" interact spawn smbpasswd -a 用户2 expect "*password:" send "用户2的密码\r" expect "*password:" send "用户2的密码\r" interact ...然后赋予脚本执行权限并且执行就行了chmod +x 脚本名 ./脚本名配置基本已经完成了,接下去便是启动smb服务器service smb start将smb加入开机启动项chkconfig smb on
2018年11月22日
2,202 阅读
0 评论
0 点赞