目录
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的资源:
参考: