目录
1、Ubuntu 多用户管理的场景
2、多用户管理理解
3、多用户管理
1、创建用户组
2、创建用户
3、给用户分配权限
4、SSH远程连接
1、Ubuntu 多用户管理的场景
多人需要远程登录服务器完成各自的任务,同时各用户之间还不能共享各自的数据,另外系统管理员需要给远程登陆用户限制系统资源或者文件的访问权限。linux 的权限系统主要是由用户、用户组和权限组成,权限分为读、写、执行三种。典型的例子就是服务器的管理。
2、多用户管理理解
Ubuntu 的多用户管理包含用户组 groupname 与用户 username 的管理。用户就是一个个登录并使用 Ubuntu 的用户。Ubuntu 内部用UID表示。用户组就是用户的分组。Ubuntu 内部用GID表示。用户与用户组可以是一对一、一对多、多对一或者多对多的关系。用户组一般是放置具有相同访问权限的用户。
Ubuntu 本身含有多个自带的用户组及用户,可以使用命令 cat /etc/group 查看,
/etc/group 的内容包括用户组(group)、用户组口令、GID及该用户组所包含的用户(user),每个用户组一条记录,格式为 用户组名:组密码:GID:组内用户
在 /etc/group 中的每条记录分四个字段:
- 第一字段:用户组名称
- 第二字段:用户组密码
- 第三字段:GID,即 Group ID,在系统中是唯一的,用户组在 linux 内部用 GID 表示。比如 root 的 GID 是0,1~499为系统用户,500以上为普通用户
- 第四字段:用户列表,每个用户之间用逗号分割,该字段可以为空
可以使用命令 sudo cat /etc/passwd 查看当前的所有用户。
3、多用户管理
1、创建用户组
# 简单创建的一个用户组
sudo groupadd groupname
# 指定用户组的 GID 号
sudo groupadd --gid num groupname
比如分别执行下面这组指令:
# 创建一个名为 test 的用户组
sudo groupadd test
# 创建一个名为 test2 的用户组,GID 为 1234
sudo groupadd --gid 1234 test2
# 查看系统下的多有用户组
cat /etc/group
会看到以下结果
删除用户组:
sudo groupdel groupname
图省事的话可以不用管用户组,而是直接使用 adduser 命令创建用户,用户组只是为了方便管理用户而来的。adduser 会自动为创建的新用户创建同名用户组。
2、创建用户
用户组有两种方式创建用户,分别为 adduser 和 useradd,推荐使用 adduser。
使用 adduser 的方法:
############################ 方法一 ############################
# adduser 会在/home下自动创建与用户名同名的用户目录,系统shell版本
# 会在创建时会提示设置密码、填写用户信息等,对管理者更加友好。
sudo adduser username
# 使用 id 命令查询用户所在的组信息
id username
# 修改创建的用户的用户名、uid、gid
sudo usermod -l newname oldname
sudo usermod -u uid username
sudo usermod -g gid usrname
# 使用 passwd 命令设置对应用户名的密码,不管设置过没有,新密码将覆盖调旧密码
sudo passwd username
使用 adduser 命令创建用户时的界面如下,每步都有提示,操作起来对人类非常友好
使用命令 sudo cat /etc/group 会发现 adduser 命令会创建一个同名的用户组,因此使用这个命令时可以没有创建用户组。
这个命令会在系统目录 /home 下新建一个名为 username 的文件夹,比如我创建了一个名为 user1 的用户,结果如下:
用户的角色是通过 UID 和识别的,设置时一定要保证 UID 的唯一性
删除用户的命令 userdel:
# userdel 只能删除用户,并不会删除相关的目录文件。userdel -r 可以删除用户及相关目录
# 如果 username 还处于进程中,需要加上 -f 强制删除
sudo userdel -r [-f] username
使用 useradd 的方法:
个人感觉 useradd 用起来挺不方便的,我在尝试使用 useradd 创建用户的时候遇到了挺多问题,比如使用 -p 参数设置的密码在远程连接时不能用,必须使用 passwd 命令设置新的密码才能用,有知道为什么的朋友欢迎留言讨论,还有 useradd 的参数种类太多看的头大。具体可以自行执行指令 useradd -h 查看,如下:
######################## 方法二(不建议用) ######################## # 注意!使用 useradd 时,如果后面不加任何参数,则创建出来的用户将没有 home 目录、没有密码、没有系统shell sudo useradd -u 1234 -g groupname -s /bin/bash -b /home/username -p password username
3、给用户分配权限
使用 chmod 命令给用户设置权限
sudo chmod xxx /home/username
其中 xxx 三个位置的值分别对应u/g/o,即用户user(文件或目录的所有者)、同组用户group(与文件属主有相同组ID的所有用户)、其他用户others。,权限有读、写、执行三种可选,具体的数值由拥有权限之的和来确定,以下分别为三种权限的值。
- r = 可读属性,值=4
- w = 可写属性,值=2
- x = 可执行属性,值=1
不同的组合会有不同的数值,比如 700 代表u=7、g=0、o=0,文件只有本用户才有读写执行权限,其他所有用户对该文件不能有任何操作。比如我给 user1 用户设置了 700 权限
sudo chmod 700 /home/user1
然后就会在该文件上显示一个叉叉,系统管理员账户也无法访问:
如果此时想访问该用户文件,可以使用 root 权限 ,然后 cd 进去即可查看:
su sudo
sudo 权限:新创建的用户默认是没有 sudo 权限的,可以使用以下命令为用户增加 sudo 权限
adduser username sudo
原理就是将用户 username 加入到 sudo 用户组,比如:
删除 sudo 权限:
sudo gpasswd -d username sudo
切换用户:
在 ubuntu 系统中可以使用 su 命令切换用户:
su username
4、SSH远程连接
SSH 远程连接时使用以下指令,然后会提示输入密码之类的,正常输入就行啦~
ssh username@ip
username 是你需要连接的那个用户的名字,ip 是用户所在主机的 ip 地址,同一台主机的用户公用同一个 ip 地址。
假如我刚才创建了一个名为 user1 的用户,ubuntu 的 ip 地址为:123.123.123.123,然后在我的 win10 电脑上进行远程连接的指令为:
ssh user1@123.123.123.123
比如我用win10系统远程连接实验室的服务器中用户user1的资源:
参考:
linux下查看所有用户及所有用户组_黄老湿的技术博客_51CTO博客
ubuntu多用户权限管理及远程连接_ywfwyht的博客_ubuntu 多用户