linux下的用户和权限

用户管理

linux是一个多用户的操作系统,拥有最高权限的是管理员用户root,我们可以在其中创建多个用户,可以给这些用户限制一些权限,防止意外发生。可以使用下面命令创建一个叫做monkey1024的用户

useradd monkey1024

创建之后,可以在home目录下看到生成了一个monkey1024的文件,即一个用户会对应一个文件。使用下面命令给monkey1024设置密码:

passwd monkey1024

之后我们通过logout命令退出当前用户的登录,然后再使用monkey1024登录即可,登录之后输入pwd可以看到当前所在的目录。

当不需要某个用户的时候,我们可以将其删除,删除方式包含下面2种:

  • 仅删除用户,保留其home目录
    userdel monkey1024
    
  • 删除用户和home目录
    userdel -r monkey1024
    

用户切换命令,切换到root用户:

su - root

用户组

创建一个叫做dev的用户组:

groupadd dev

删除叫做dev的用户组:

groupdel dev

创建用户时,若未指定组,则该用户会放到与其同名的组种,下面创建用户monkey1024,并将其放入到dev组种

useradd -g dev monkey1024 

创建成功之后,通过下面命令查看monkey1024的用户信息

id monkey1024

下面命令是修改用户monkey1024所在的组为test

usermod -g test monkey1024

文件管理

在linux中每个文件有下面几个概念:

  • 所有者一个文件的所有者默认是该文件的创建者,当然,我们可以通过下面命令修改文件的所有者,将文件aaa的所有者改为monkey1024
    chown monkey1024 aaa
    
  • 所在组文件的所在组与该文件所有者的所在组是一致的。可以通过下面命令修改文件的所在组,将aaa文件的所在组改成dev
    chgrp dev aaa
    
  • 其他组除了文件所有者和所在组的用户外,文件所在的别的组叫做其他组,比如上图中的test组

权限简介

在linux中不同组中的用户可以操作的文件权限是不同的,我们输入ll之后可以看到显示如下内容:

drwxr-xr-x.  20 root root 3060 7月   1 13:22 dev

其中最前面的10个字符含义如下

1.第1个字符表示文件类型:

  • -表示文件
  • d表示目录
  • l表示软连接
  • c表示字符设备,键盘,鼠标
  • b表示块设备,硬盘。

由此可见,上面的内容第1个是d,即表示目录。

2.第2-4个字符(上面的rwx)表示文件所有者拥有的文件权限

3.5-7个字符(上面的r-x)表示文件所在组的其他用户拥有的权限

4.8-10个字符(上面的r-x)表示其他用户拥有该文件的权限

文件权限rwx表示的内容如下:

  • r,read表示可读
  • w,write表示可写,若用户对该文件所在的文件夹拥有w权限,则可以对其删除。
  • x,execute表示可执行

文件夹权限rwx表示内容如下:

  • r,可以查看文件夹中的内容
  • w,可以对文件夹内进行创建,删除,重命名操作
  • x,可以进入到该目录

权限修改

我们可以使用chmod命令来修改用户对文件的权限,u表示所有者,g表示所有组,o表示其他用户,a表示所有人,即前三者的总和。

chmod u=rwx,g=rx,o=r aaa   给aaa文件/文件夹赋予权限,u赋予rwx权限,g赋予rx权限,o赋予r权限
chmod g+x aaa	给aaa文件/文件夹的g增加x权限
chmod o-w aaa	给aaa文件/文件夹的o减去w权限

除了使用rwx字符的方式赋予权限之外,还可以使用对应的数字赋予权限,r=4,w=2,x=1,即r可以使用数字4来表示。倘若要赋予rwx权限,我们可以将其对应的数字相加,rwx=4+2+1=7,若要赋予rx权限,则rx=4+1=5。上面的:

chmod u=rwx,g=rx,o=r aaa 

修改为使用数字之后的命令如下,3位数字分别对应了u,g,o:

chmod 754 aaa

防火墙

在linux中有一道防火墙,可以开启或关闭指定的端口,这样就提高了安全性。当设备A访问3306端口时,倘若防火墙并未开启该端口,此时设备A是无法访问的。

关于操作防火墙的一些命令:

 systemctl status firewalld 查看防火墙状态
 systemctl disable firewalld 永久关闭防火墙(生产环境下不要这么做)
 systemctl enable firewalld 重启后开启防火墙
 
 下面两个命令在重启之后会回复到防火墙之前的设置
 systemctl start firewalld	开启防火墙
 systemctl stop firewalld   关闭防火漆

注意,考虑到安全问题,在实际生产环境中不要关闭防火墙,通常我们会开放需要使用的端口。

查看开放的端口:

firewall-cmd --list-ports

查看特定的端口是否开放:

firewall-cmd --query-port=端口/协议

打开端口:

firewall-cmd --permanent --add-port=端口号/协议

关闭端口:

firewall-cmd --permanent --remove-port=端口号/协议

开启或关闭后需要重新载入:

firewall-cmd --reload

下面以在linux配置tomcat为例演示下防火墙的作用,请参考视频。