创建文件夹
1
mkdir -p /mnt/share
安装依赖
1
yum install cifs-utils
修改/etc/fstab文件,文件最后加入:
1 | //192.168.16.32/serverapp /mnt/share cifs defaults 0 0 |
执行命令
1 | mount -t cifs -o username='administrator',password='**' //192.168.16.32/serverapp /mnt/share |
创建文件夹
1
$ mkdir -p /mnt/share
安装依赖
1
$ yum install cifs-utils
修改/etc/fstab文件,文件最后加入:
1 | //192.168.16.32/serverapp /mnt/share cifs defaults 0 0 |
执行命令
1 | mount -t cifs -o username='administrator',password='**' //192.168.16.32/serverapp /mnt/share |
在Linux
中,每个用户都有一个群组。
那么新建用户的时候并没有指定群组啊,群组是怎么来的呢。
其实我们不需要设置群组,创建用户的时候会默认创建一个和用户名一样的群组,并且把用户添加到这个群组中。
下面来看一下用户的群组
可以看到第三列和第四列是相同的。第三列
是用户名,第四列
是群组名。
了解这些之后下面来操作一下群组
当用户少的时候默认的群组就足以使用了,但是当用户多的时候还是每个用户都在自己的群组中,这种情况就不方便管理了。
下面演示一下新增群组,使用addgroup
命令,用法很简单,在后面直接加上要创建的群组就可以了。记得要用root
身份
1 | $ addgroup admin |
看到这个消息,就表示新增成功。
这个时候群组里面还是空的,没有添加用户。
假如我要将 dev
这个用户放到我刚创建的 admin
这个群组里,可以这样写
1 | $ usermod -g admin dev |
可以看到用户dev的群组已经改成了admin
除了使用ll
命令之外还可以这样查看用户所在群组
1 | $ groups dev |
也可以不添加用户名,直接使用groups命令,则显示当前用户所在群组
我们也一次把用户添加到多个群组里面,就用-G
参数
首先我们先来多创建两个群组,分别是g1
和g2
1 | $ addgroup g1 |
接着运行以下命令
1 | $ usermod -G admin,dev,g1,g2 dev |
配合 -g 或 -G 参数时,它会把用户从原先的群组里剔除,加入到新的群组。如果不想离开原先的群组,又想加入新的群组,可以在 -G 参数的基础上加上 -a 参数,表示“追加”。
-a
的情况1 | $ groups dev # 先查看一下用户所在群组 |
可以看出,用户的群组只有dev
了,之前的群组已经不存在了
-a
的情况1 | $ groups dev # 先查看一下用户所在群组 |
可以看出原来的群组还在
用法很简单,在命令后接想要删除的群组名。
1 | $ delgroup dev |
dev
已经不再dev
群组,因为它已经被删除
adduser
命令,添加新的用户
这个命令很容易理解,顾名思义:add是添加的意思,user是用户的意思,合在一起就是adduser 添加用户,用法也很简单,命令后面直接写上要添加的用户名
1 | $ adduser frank |
只需输入密码,然后一路回车,最后输入y完成新增用户
如果使用个人用户是没有权限操作的,只能使用root用户
现在可以查看home
目录下,会发现多出一个frank
的文件夹
拿到管理员给创建的用户之后,一般情况下我们都要修改一下默认密码,修改密码的命令是passwd
,用法和adduser
类似,后面加上用户名即可。
下面修改一下frank
的默认密码
1 | $ passwd frank |
命令后面也可以不加用户名,默认是当前用户
能添加用户,那就肯定可以删除用户的,下面就使用deluser
命令来删除用户
deluser
是 delete
和 user
的缩写,delete 是删除
的意思,user 是用户
的意思。合在一起就是删除用户
用法和adduser
是一样的,如下
1 | $ deluser frank |
一行命令成功删除
可以看到删除用户是没有确认过程的,所以要慎用
这个时候在查看一下home
目录查看一下用户文件夹还有几个
只使用deluser
是不会删除用户目录的,如果想把目录文件一块删除,需要增加一个参数
1 | deluser --remove-home frank |
个人网站是无法接入微信扫一扫登录的,只能使用曲线救国的方式,采用小程序了,小程序是可以获取到微信用户的 UnionID
的。
首先第一步要注册一个小程序应用,很简单的,用邮箱申请即可,点击注册
注册完成之后就可以进行开发了,我后台服务使用的是node来写的
要做扫一扫登录,二维码是不可少的,官方也提供了几种生成二维码的方式。查看生成方式
我使用的是A接口,详细信息可查看官方文档。
1 | POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN |
从api上可以看出,调用这个接口需要传入成一个 ACCESS_TOKEN
,这个不是我们生成的,需要调用小程序的服务来获取到。
获取 ACCESS_TOKEN
示例
1 | const getWeChatAccessToken = () => { |
token过期的时间是由微信服务控制的,拿到之后可以存到redis中,不需要每次都去获取新的
获取到token之后就可以调用生成二维码的方法了
调用示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 const getQRCode = (access_token) => {
return new Promise((resolve, reject) => {
let fileName = Common.randomNumber()
let url = `https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=${access_token}`
axios.request({
method: 'post',
responseType: 'arraybuffer',
url,
data: {
path: 'pages/login/login?clientId='+fileName
}
}).then(res => {
fs.writeFile(Common.config("qrCode") + fileName + ".jpeg", res.data, "binary", function (err) {
resolve(fileName)
});
}).catch(e => {
errorlog.error(e)
resolve(Common.unifyResponse("获取二维码失败", 500))
})
})
}
返回的是二维码的文件名称
1 | LoginRouter.post("/qrlogin/:clientId", (req, res) => { |
处理登录请求,在小程序完成授权之后,调用webSocket
服务通知页面授权成功,跳转到首页
1 | $.ajax({ |
登录页面调用服务器端生成二维码并显示在页面上,并且连接webSocket
服务,等待服务器确认登录。
login.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Page({
onLoad: function (options) {
const scene = decodeURIComponent(options.clientId);
wx.setStorage({
key: "clientId",
data: scene
})
},
login: async function (e) {
let result = await util.getLoginInfo()
if (result) {
let clientId = wx.getStorageSync('clientId')
await util.httpRequest({
method: 'post',
url: 'api/wx/qrlogin/' + clientId
})
wx.switchTab({
url: '../index/index'
})
}
}
})
login.wxml
1 | <button open-type="getUserInfo" bindgetuserinfo="login">授权登录</button> |