一、Linux概述
Linux内核最初只是由芬兰人林纳斯·托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。
1.1 Linux特点
首先Linux作为自由软件有两个特点:
一是它免费提供源代码
,二是爱好者可以根据自己的需要自由修改、复制和发布源码
1.2 Linux的各个发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
- Red Hat Linux (小红帽)
- Ubuntu Linux 界面 桌面系统
- SuSE Linux
- Gentoo Linux
- 其他 Linux 发行版
1.3 Linux应用领域
- IT服务器
- 嵌入式
- 个人桌面
1.4 Linux和Windows区别
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。
主要区别如下
二、下载安装(暂略)
三、Linux系统目录结构
在xshell中使用ll可以查看Linux的目录结构:
假设我们想要进入bin目录下查看bin目录下有哪些文件可以使用 cd bin进入bin目录下,在bin目录下使用ll命令查看当前目录下的文件。
想要退出到根目录下,也就是返回上一级目录,使用cd .. 命令即可。对于其他目录的访问也是如此。
- /bin
是Binary的缩写,这个目录存放着经常使用的命令。
- /boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
- /dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
- /etc
所有系统管理所需要的配置文件和子目录,操作系统的核心配置文件。
- /home
存放普通用户的主目录,在Linux中的每个用户都有一个自己的目录,一般该目录用用户的账号名命名。
- /lib(/lib64)
系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /media
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
- /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
- /opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据库就可放到该目录下。默认为空。
- /proc
虚拟目录,是系统内存的映射,访问这个目录来获取系统信息。
- /root
该目录为系统管理员,超级权限者的用户目录
- /sbin (usr/sbin、/usr/local/sbin)
sbin就是super user的意思,这里存放的是系统管理员使用的系统管理程序
- /srv
service 的缩写,该目录是存放一些服务启动之后需要提取的数据
- /sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现的一个文件系统,存储进程的文件系统。
- /tmp
存放临时文件
- /usr
用户的很多应用程序和文件都放在这个目录下。
- /var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
- /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
- /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
- /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
3.1 Linux用户和用户组
用户管理概述
Linux是一个多用户、多任务的操作系统.
用户账号和用户组
用户概念
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)
用户组概念
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;
Linux用户和组的关系
用户和用户组的对应关系有以下 4 种:
- 一对一:一个用户可以存在一个组中,是组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
- 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
3.2 Linux用户管理
Linux 系统的管理员之所以是 root,是因为该用户的身 份号码即 UID的数值为 0,UID 就相当于我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。
- 管理员 UID 为 0:系统的管理员用户。
- 系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提 权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏 范围。
- 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。 需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000 开始的(即使前面有闲置的号码)。
添加用户 useradd
useradd (选项)(参数)
选项
-d 指定创建的用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为 YYYY-MM-DD.
-u 指定该用户的默认 UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认 Shell 解释器
参数 :要创建的用户名。
示例
下面我们创建一个普通用户并指定家目录的路径、用户的 UID和用户的名称 。
[root@localhost /]# useradd -u 501 zj
通过以下命令查看创建的用户的信息
[root@localhost home]# id zj uid=501(zj) gid=1000(zj) groups=1000(zj)
修改用户 usermod
有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。
usermod (选项) (参数)
选项:
-c <备注>:修改用户帐号的备注文字;
-d <登入目录>:修改用户登入时的目录;
-e <有效期限>:修改帐号的有效期限;
-f <缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g <群组>:修改用户所属的群组;
-G <群组>;修改用户所属的附加群组;
-l <帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
示例
再来试试用-u 参数修改 zhangjin用户的 UID 号码值。除此之外,我们还可以用-g 参数 修改用户的基本组 ID,用-G 参数修改用户扩展组 ID。
[root@localhost home]# usermod -u 520 zj [root@localhost home]# id zj uid=520(zj) gid=1000(zj) groups=1000(zj)
用户账号口令管理
passwd 命令用于修改用户密码、过期时间、认证信息等。
passwd (选项) (参数)
选项:
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
示例1
用root帮zj设置密码为123,密码是不显示的。
[root@localhost home]# passwd zj Changing password for user zj. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
示例2
假设zhangjin正在度假,而且假期很长,那么可以使用 passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。 这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
[root@localhost ~]# passwd -l zj Locking password for user zj. passwd: Success [root@localhost ~]# passwd -u zj Unlocking password for user zj. passwd: Success
删除用户 userdel
userdel [选项] 用户名
选项:
-f 强制删除用户
-r 同时删除用户及用户家目录
这个命令的目的删除用户,与它相关的文件有:
- /etc/passwd
- /etc/shadow
- /home/username
示例
下面使用 userdel 命令将 zj 用户删除,其操作如下:
[root@localhost ~]# userdel -rf zj [root@localhost ~]# id zj id: zj: no such user
3.3 Linux用户组管理
添加新组groupadd
groupadd (选项) (参数)
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
示例
建立一个新组j java,并设置组ID为 666 加入系统:
[root@localhost ~]# groupadd -g 666 java
查看组
查看root用户属于哪些组
[root@localhost ~]# groups root
查看全部组
[root@localhost ~]# getent group
修改群组groupmod
groupmod(选项)(参数)
选项
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
示例
把建立java组改为web并设置GID改为888
[root@localhost ~]# groupmod -g 888 -n web java
删除群组groupdel
groupdel groupname
示例
删除web组
[root@localhost ~]# groupdel web