内容提要
-
用户管理
-
用户组管理
-
权限管理
用户和用户组
1.计算机通过用户名和密码识别用户。
2.Linux中新建用户后,需要设置密码(企业开发中很多时候需要远程访问,为了安全必须设置密码)
3.系统中有一个特殊的用户叫root,这个被称作超级用户,一般会默认,拥有最高权限。
4.用户组:把几个用户归在一起,这样的组被称为用户组,规定文件所属用户组的权限可以使该组成员拥有权限。
普通用户和超级用户
一台电脑可以有且仅有一个超级用户以及若干个普通用户。
-
普通用户:安装系统时我们创建的用户(st),也可由超级用户进行分配,如:lucy
-
超级用户:又被称作最高管理员,用户名是root,Linux系统内置,第一次使用root用户的时候,需要修改密码
修改超级用户root的密码
语法:
sudo passwd --然后按照提示输入密码即可,这里的密码输入是不可见的
举例:
注意:终端输入密码的时候,没有提示。如果输入错误,重新输入即可
普通用户和超级用户的切换
-
普通用户切换到root用户:
sudo -i --没有设置密码的时候,使用这个进入 su root --设置密码之后可以通过这个命令进入
root切换普通用户
su 用户名
whoami
说明:查看当前登录的用户
whoami
团队共享文件
问题抛出
企业开发中,我们一般是团队开发。团队成员需要在一台服务器上共同完成一项任务(开发一套软件)团队成员在服务器上,用户分别是luvy,lewis,mike,petter,他们都属于workgroup这个用户组
在/home目录下新建一个名为work的目录,作为这个小组的工作目录。
workgroup组成员拥有这个目录的读写权限,并禁止其他无关用户操作这个目录。
如何解决以上问题
①新建组workgroup并添加四个用户,分别为其设置密码(初始密码比较简单)。
②建立工作目录/home/work
③把这个新建目录的所有权交给workgroup组
④组成员对其拥有读写权限,其天然不具备任何权限。(r-
读,w
-写,x
-执行,-
无权)
⑤把这个工作目录交给lewis
用户管理
指令
添加新用户
执行者:ROOT用户
语法
[sudo] useradd[选项]用户名
备注:如果在普通用户下,需要在指令中加入sudo
,如果在root用户下,则省略sudo
,这里的sudo是临时提升root用户
范例:
sudo useradd -d /home/lucy -m lucy //解释:创建了一个用户lucy,并在加目录下为其创建一个同名目录(同时会默认创建一个跟用户同名的组lucy) 以上指令做了三件事 1.在系统数据库创建了一个名为lucy的用户 2.在/home目录下创建了一个名为lucy的目录 3.在数据库针对用户lucu创建了 一个同名的用户组llucy(用户组)
注意:;如果在新建用户的时候没有指定用户组,就会创建一个与用户名同名的组,并让新用户加入这个组
范例:
sudo useradd -d /home/peter -mg lucy peter 解释:创建了一个用户peter,并在家目录下为其创建一个同名目录/home/peter,同时将peter用户添加到已经存在的组,Lucy组
查看用户所属组
执行者:root 用户
语法:
[sudo] groups 用户名
范例:
sudo groups st
删除用户
执行者:root
语法:
[sudo] suerdel [选项] 用户名
选项:
-f
:强制删除用户,即使用户当前已经登录(强制删除)
-r
:删除用户的同时,删除与用户相关的搜友文件(递归删除)
范例:
sudo userdel -rf peter 解释:删除用户peter,并在不提示任何信息的前提下递归删除peter对应的用户目录(/home/peter)
给用户添加口令(密码)
执行者:root用户
语法:
[sudo] passwd [选项] 用户名
选项:
-l
:锁定口令,也就是禁用账户
-u
:解锁口令
-d
:使账号无口令(建议不这么做)
-e
:强制用户下次登陆时修改密码
如果缺少选项,则修改/设置当前用户的口令
说明:
root用户:给用户设置初始密码(密码复杂度没有要求,因为初始密码一般比较简单)
sudo passwd lucy 解释:给lucy设置初始密码,密码复杂度没有要求
普通用户:修改自己的密码(这个密码是用户的专属密码,对于密码复杂度有要求)
passwd
修改用户
执行者:root用户
语法:
[sudo] usermod [选项] 用户名
选项:
-c
:备注,修改用户的备注文字
-g
:用户组,修改用户所属的用户组
-G
:附属组,修改用户所属的附属群组
-s
:shell,修改用户登陆后所使用的shell
-u
:uid,修改用户的uid
范例:
sudo usermod -g root peter 解释:将peter用户所属的组改成root组 sudo usermod -g lucy -G root,st lucy 解释:将lucy用户所属的组改成lucy,并且设置附属组为root和st,多个附属组用逗号分隔
用户组管理
指令
添加用户组
执行者:root用户
语法:
[sudo] groupadd [选项] 组名
选项:
-g
:GID,指定新用户组的标识(唯一编号),如果不指定,系统会自动编号,一般采用自动编号
范例:
sudo groupadd workgroup --创建一个名字为workgroup的组
查看所有组
语法
方式1: cat /etc/group 方式2: [sudo] cat /etc/gshadow
查看用户组中的用户
语法:
grep '组名' etc/group getent group
删除用户组
执行者:root用户
语法:
[sudo] groupdel [选项] 组名
范例:
sudo groupdel workgroup --删除我们添加的workgroup组
修改用户组
执行者:root用户
语法:
[sudo] groupmod [选项] 新组名 旧组名
选项:
-g
:gid,组编号(唯一编号)
-o
:和-g同时使用,允许用户组新的GID和系统已有用户组的GID相同,不建议用
-n
:将用户组的名字改为新名字(new)
范例:
sudo groupmod -n YQ workgroup --将workgroup改为YQ sudo groupmod -N workgroup YQ -g 1002 -o --将yq改名为workgroup,并且将GID改成跟系统相同GID
权限管理
所谓的权限管理,就是说让某个用户拥有某个文件或者目录,让用户对文件是否拥有读写执行的权限。
指令
修改文件/目录的拥有着或者组
执行者:root用户
语法:
[sudo] chown [选项] ...[所有者[组名]] 文件或者目录的路径
选项:
-c
:显示更改部分的信息
-f
:忽略错误信息
-r
:处理指定目录及其子目录中的所有文件
-v
:显示详细的处理信息
范例:
sudo chown lucy /home/work/demo01.c 解释:指定demo10.c文件的所有者为用户lucy(直接作用于单个用户) sudo chown lucy /home/work/demo02.c 解释:指定demo02.c文件的所有者为用户组lucy(直接作用于同一组下多个用户) sudo chown -R mike:lucy /home/work/demo02 解释:指定demo02目录及其子目录所偶文件的所有者为用户mike以及用户组lucy
举例:;
修改文件或者目录的权限
这里提到的权限:r(读)w(写)x(执行)-(无权限)
执行者:root用户
语法:
[sudo] chmod [选项] 权限 文件或目录路径
选项:
-c
: 显示更改部分
-f
:忽略提示信息
-r
:递归指定目录及子目录中的所有文件
-v
:显示详细信息
方式1:文字设定法
语法:
sudo chmod [选项1] [选项2] 权限名 文件 或目录路径
选项:
-
选项1:给谁添加权限
-
a
:all,所有用户 -
u
:user,当前用户 -
g
:group,当前用户组 -
o
:other,其他用户组 -
选项2:操作权限
-
+
:增加权限 -
-
:删除权限 -
=
:设置权限 -
权限名
-
r
:readonly,只读 -
w
:write,写 -
s
:执行 -
-
:无权限(针对rwx对应的位置进行设置)范例:
sudo chmod u=rwx,g=rx,o=- /home/work/demo01.c 解释:针对demo01.c,当前用户拥有读写执行权限,用户组拥有读和执行权限,其他用户或者组没有权限
方式2:数字设定法
语法:
[sudo] chmod 权限数字 文件或目录路径
权限数字:
r
:4
w
:2
x
:1
~
:0
范例:
sudo chmod 750 /home/work/demo01.c
解释:
权限数字的表示:777,三个数字:
①第一个数字表示当前用户(4+2+1=7:rwx,4+2=6:rw,0:---,。。。)
②第二个数字表示用户组(4+2+1)
③ 第3个数字表示其他用户或用户组(4+2+1)
每个数字都是权限累加的和。
范例:
sudo chmod 750 /home/work/demo01.c 解释:针对demo01.c,当前用户拥有读写执行权限,用户组拥有读和执行权限,其他用户或者组没有权限
资料补充
菜鸟教程:菜鸟教程 - 学的不仅是技术,更是梦想!