Linux学习记录(五)

写在前面

本文主要讲解Linux中的一些自有服务。

运行级别

在不同的Linux操作系统中,有不同的文件结构,相关信息以百度为准

模式介绍

  • Ubuntu的默认开机的runlevel是 5,可以用runlevel命令来查看当前的默认运行级别。
    image.png

  • debianrunlevel级别定义如下:

  • 0 – Halt,关机模式
  • 1 – Single,单用户模式
  • 2 - Full multi-user with display manager (GUI)
  • 3 - Full multi-user with display manager (GUI)
  • 4 - Full multi-user with display manager (GUI)
  • 5 - Full multi-user with display manager (GUI)
  • 6 – Reboot,重启
  • S - 单用户恢复模式
  • 运行级别2~5提供的服务是一样的,Ubuntu系统下0表示关机,1表示维护模式,2~5表示GUI界面的系统,6表示重启系统。
  • 该进程所对应的配置文件为 /etc/init/rc-sysinit.conf

Linux下自启动脚本

Ubutn的自启脚本在 /etc 目录下的 rc0.d~rc6.d 分别对应操作系统 0-6 级运行状态下需要执行的脚本。

用户与用户组管理

概念介绍

  • Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
  • 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
  • 每个用户账号都拥有一个惟一的用户名和各自的密码。
  • 用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
  • 要想实现用户账号的管理,要完成的工作主要有如下几个方面:
    • 用户账号的添加、删除、修改以及用户密码的管理
    • 用户组的管理

用户账户

  • 超级账户root(0)
    • 默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。
  • 程序账户(1~499)
    • 与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的binadmnodobymail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
  • 普通账户(500~655355)
    • 这类用户一般是由具备系统管理员root的权限的运维人员添加的。

用户用户组

linux系统中的用户组group就是具有相同特性的用户user集合;
用户和用户组的对应关系有:一对一、一对多、多对一和多对多.

一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。比如,root。
一对多:即一个用户可以存在多个组中,这个用户就具有这些组。
多对一:即多个用户可以存在一个组中,这些用户这些组的共同权限。
多对多:即多用户可以存在于多个组中。并且几个用户可以归属相同的组;其实多对多的关系是前面三条的扩展。

用户及用户组配置文件介绍

  • /etc/passwd 存储用户关键信息
  • /etc/group 存储用户组关键信息
  • /etc/shadow存储用户密码信息

passwd

image.png
字段解释:

用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell

  • 用户名:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
  • 密码:密码占位符x,这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。
  • 用户ID:UID,用户的识别符
  • 用户组ID:GID,该用户所属的主组ID,默认情况下会同时建立一个与用户同名且UID和GID相同的组。
  • 注释:解释该用户是做什么用的
  • 家目录:用户登陆后首先进入的目录,一般与/home/用户名这样的目录
  • 解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;

group

image.png
字段解释:

用户组名:密码:用户组ID:组内用户:

  • 组内用户:附加组是该组的用户名称

用户管理

添加用户

  • 常用语法:useradd 选项 用户名

    • 常见选项:
      • -g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
      • -G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
      • -uuid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义
      • -m: 自动建立用户的登入目录;
      • -c comment:添加注释
  • eg1:创建用户张三,不添加任何选项
    image.png

    • 验证是否成功:
      • 验证/etc/passwd的最后一行,查看是否有zhangsan的信息
      • 验证是否存在家目录(创建好用户之后随之产生一个同名家目录)
  • eg2:创建用户lisilisi属于1000主组,附加组1001,UID666
    image.png

    • 注意:查询用户的主组在/etc/passwd中,查询用户的附加组在/etc/group

修改用户

  • 常用语法:usermod 选项 用户名
    • 常用选项:
      • -g-G-u同上
      • '-l':修改用户名
  • eg1:修改zhangsan用户主组为1000,附加组改为1001
    image.png
  • eg2:修改zhangsan用户名改为wangwu
    image.png

修改密码

  • 常用语法:passwd 用户名
  • eg1:修改wangwu的密码
    image.png

删除用户

  • 常用语法:userdel 选项 用户名、
    • 常用选项:
      • -r:删除用户的同时,删除其家目录
  • eg1:删除wangwu用户
    image.png
  • 提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。

补充

  1. useraddadduser的区别
    使用useradd newuser/home里并没有newuser的目录。查询百度得知,可以用 useradd -m newuser,但是-m这个命令只有在你创建用户的时候才有用。
    如果已经创建了用户且没有目录的话,useradd -m newuser是不会为用户创建目录的,也就是说我必须删掉这个用户再重新useradd -m newuser才可以,这样的话会非常麻烦.目前我试了一下 usermod -d /home/newuser -m newuser 是没有效果的。但是! 使用adduser的话直接adduser username也会有目录,不用像useradd那样用-m了。但是adduser一创建就会要求输入密码。useradd创建的时候就不会要求输入密码。

用户组管理

用户组添加

  • 常用命令:groupadd 选项 用户组名
    • 常用选项:
      • -g:自定义用户组ID
  • eg1:创建一个新的用户组,命名为Administrators
    image.png

用户组编辑

  • 常用命令:groupmod 选项 用户组名
    • 常用选项:
      • -g:自定义GID
      • -n:修改用户组名
  • eg1:修改Administrators用户组,将GID1002改成1020,将名称改为admins
    image.png

用户组删除

  • 常用语法:groupdel 用户组名
  • eg1:删除admins
    image.png
    • 注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。

网络配置

常用命令

查看ip地址

ifconfig
image.png
图例介绍:详细介绍ifconfig的信息

启动网卡

  • ifup 需要启动的网卡名称
    - 不知道为什么在我安装的虚拟机上没法用这个命令,搜了一下也没找到解决方案
    image.png
    - 问题已经解决
  • ifconfig 需要启动的网卡的名称 up
    image.png

关闭网卡

  • ifdown 需要启动的网卡名称
    • 同ifup
      • 问题已经解决
  • ifconfig 需要启动的网卡的名称 down
    image.png

重启网卡

  • /etc/init.d/networking restart 【重启全部网卡】
    image.png
  • ifdown 网卡名 && ifup 网卡名【必须同时执行】

关于上述问题的解决方案

Q:为什么没有熟知的eth0
A:自15版本开始就不叫eth0
Q:为什么在执行ifupifdown/etc/init.d/networking restart,这些命令会报错
A:经过几篇博客,和一顿乱操作,我大致猜测,应该是没有为系统配置IP地址,方法如下

  • 1.打开系统的网卡配置文件vim /etc/network/interfaces
  • 2.写入如下代码

    auto ens33 #填写自己的网卡名
    iface ens33 inet static #配置静态IP地址
    address 192.168.1.10 #手动设置静态IP地址
    netmask 255.255.255.0 #手动设置子网掩码
    gateway 192.168.1.1 #手动设置网关

    • 设置网关的话建议使用netstat -rn查看当前现有的网关
  • 3.重启NetworkManager服务,service network-manager restart
  • 4.重启networking服务,/etc/init.d/networking restart
  • 5.使用ifupifdown 控制网卡,问题解决

查看配置文件

不同的Linux系统网卡的配置文件存放地址不同Ubuntu存放在/etc/network/interfaces
image.png

配置静态ip

在上一块的问题解决中介绍了配置的方法

配置动态ip

auto ens33
iface ens33 inet dhcp

SSH服务

ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。
协议使用端口号:默认是22
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件/etc/ssh/ssh_config
image.png
Ubuntu中好像不是自带的要通过apt-get install ssh去下载

服务控制

  • service sshd start #启动服务
  • service sshd stop #关闭服务
  • service sshd restart #重启服务
  • /etc/init.d/sshd start/stop/restart #同理

SSH终端

远程连接

  • xshell
    网上应该有破解版,博主白嫖的学生机,至于怎么连接,按照xshell的操作走就好了

文件传输

  • filezilla
    同理,乱搞一下就行了