Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
特点:
开源:不完全免费,因为有些系统加入了收费软件。
多用户:系统可以保证个用户之间的安全和隐私。
多任务:同时开启多个应用程序。
良好的界面:Linux同时具有字符界面(命令行)和图形化界面。DOS当时就是现在的cmd,不存在图形化界面。
支持多平台:可以在多种硬件平台上安装和运行,如pc或服务器或嵌入式系统,现在的安卓系统底层就是Linux的核心。
应用领域:国内大部分应用于企业的服务器上和超级计算机。大部分环境是,在Windows上开发,在Linux系统上进行部署。
VMware安装Centos:略
设置静态IP:略
用户管理:
创建一个普通用户,使用默认值。useradd tom
创建伪用户:useradd -s/sbin/nologin test3
修改test账户的UID :usermod -u 9000 test1
修改账户的附加组为test、test1:usermod -aG root,adm jerry
将test5的伪用户状态修改为正常用户:usermod -s /bin/bash test5
删除:userdel 【选项】 {username} :userdel zhangsan(执行完成以后在home下依然留下了张三的家目录),userdel -r lisi(执行该命令以后,home目录中的lisi目录也会一并删除,且不保留它的工作文件)
密码管理:语法:passwd 【选项】 {username}
管理员修改别人密码:passwd {UserName}
修改自己密码:passwd
锁定zhangsan账户:passwd -l zhangsan
解锁zhagnsan账户:passwd -u zhagnsan
删除zhangsan账户密码:passwd -d zhagnsan
用户身份切换:
su {UserName}:表示切换用户以后,依然停留在当前目录
su -{UserName}:表示切换用户后,去到该用户的家目录
用户组的增删改:
创建:
语法:groupadd【选项】{groupGID}
选项:-g GID指定新用户组的GID,-o通常与-g同时使用,使新用户组可以与系统已有的组ID系统
系统底层会将来给你个GID相同用户组识别为同一个用户组,这样做的目的是让来给你个用户组的权限相同。识别规则,后者遵循前者
案列:
新建一个用户组groupadd group1,此命令向系统中增加一个新组group1,新租的组标识号,在当前已有的最大组表示号的基础上加1.
groupadd -g 101 group2,此命令向系统中增加了一个新组group2,同时指定新组的标识号101
创建一个普通的用户组,并将改组添加为tom账户的附加组usermod -aG group1 tom
修改:
语法:groupmod 【选项】 {groupName},-g gid 指定新用户组的GID,-o 通常与-g同时使用,使新用户组可以与系统已有的组ID系统,-n用来修改组ID group -你newGroupName oleGroupName
案例:将组group2的组标识号修改为102 groupmod -g 102 group2 新建一个group3,并将其组名修改成big1902 groupadd group3;groupmod -n big1902 group3
删除:
语法:groupdel {groupName}
案列:groupdel big1902
注:如果删除的用户组,已经被用户追加为附加组,对应的所有用户的该附件组会被撤销掉。如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。(可以理解为像Windows中文件被占用时不能被删除。)
用户组的切换:某用户属于多个用户组时,想要访问其他用户组中的内容时,必须切换用户组才行。newgrp {GroupName}前提是该账户确实是拥有多个用户组。
passwd、shadow、group文件详解
passwd:root:x:0:0:root:/root:/bin/bash,passwd这个文件的每行内容由冒号隔开,分为7段
第一段:账户名,不要使用:. + /
第二段:密码,passwd这个文件是所有人都可查看,所以密码虽然是加密的,但是依然不安全。
第三段:UID:系统用来标识内部的账户,通常UID和账户是对应的关系。如果出现了两个不同账户名但是却使用的相同的UID,那么系统就将它们两个识别为同一个账户,只不过它们拥有不同的账户名、shell程序、家目录。后者遵循前者。
GID:此处记录的是该账户的主组信息。
注释描述:对账户的描述信息,通常自定义账户都不写这个。
家目录:用户登录系统之后的默认工作空间,该空间除root和本人意外,默认是不允许其他人访问。
shell程序:Linux、类Unix系统中的特有程序。
drwxr-xr-x. 2 root root 4096 5月 13 15:27 home,-rw-r--r--. 1 root root 45537 5月 13 11:15 install.log第一个文件是目录,第二个是普通文件。第一个字母d表示目录文件,第一个字母-表示普通文件。
sudo(SuperUser Do),它可以让普通用户执行root的权限。sudo可以限制用户执行部分root的权限。sudo会记录用户执行过的每一条命令,便于查阅服务起出事之前的状态。
好处:
使用自己配置好的用户环境
不需要知道root密码,保证root的密码安全,不用让root裸奔
避免root账户引起管理员之间的恶性冲突、流血事件。
可以限制用户执行有限的root权限
sudo执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。
sudoers文件解释
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## ## 用户组所使用
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例
## Networking
#网络操作相关命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,
/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,
/sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo
# You have to run "ssh -t hostname sudo
#
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
_XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
## user MACHINE=COMMANDS
## 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## 允许wheel用户组中的用户执行所有命令
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令
实际案例演示
实例1:让普通用户fieldyang具有/etc/init.d/nagios脚本重启的权限,可以在/etc/sudoers添加如下设置:
[root@test ~]# visudo
fieldyang ALL=NOPASSWD:/etc/init.d/nagios restart
实例2:让普通用户fieldyang具有所有超级用户的权限而又不用输入密码
[root@test ~]# visudo
fieldyang ALL=(ALL)NOPASSWD:ALL
[fieldyang@test ~]#sudo su -
[fieldyang@test ~]#pwd
/root
实例3:针对MySQL数据库的设置,让test组中的test用户具备/etc/init.d/mysqld的权限
######################## mysql ################
1.
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
2.
[root@test ~]# visudo
# test ALL=(ALL) NOPASSWD: /etc/init.d/mysqld
test ALL=(ALL) /etc/init.d/mysqld
3. start/stop mysql
3.1) start mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld start
3.2) stop mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld stop
实例4:针对tomcat的设置,让test组中的test用户具备tomcat操作的权限
######################## tomcat ################
1.
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
2.
[root@test ~]# visudo
# test ALL=(ALL) /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
test ALL=(ALL) NOPASSWD: /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
3.
[root@test ~]# vim /usr/local/tomcat/bin/catalina.sh
### JDK
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
4. start/stop tomcat
4.1) start tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/startup.sh
[test@test ~]$ ss -ntlup | grep java
[test@test ~]$ curl -I http://localhost:8080
4.2) stop tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/shutdown.sh
挂载:因为文件系统不能直接使用,Windows的文件系统需要盘符来表示,Linux的文件系统需要目录作为入口,分区的格式就是文件系统
挂载 mount 文件系统 目录(挂载点)挂载光盘镜像文件 mkdir /home/cdrom#此处创建目录cdrom并不是非要这个名称,是因为想做到见名知意 mount /dev/cdrom/home/cdrom 挂载U盘:u盘的格式如果是NTFS,那么需要安装一个插件之后才能够进行挂载,否则无法识别。yum install ntfs-3g 如果是fat32,则可以直接进行挂载。
# bash
mkdir /home/udisk # 此处创建目录udisk并不是非要这个名称,是因为想做到见名知意。
lsblk # 用来查看文件系统
mount -o iocharset=utf8 /dev/sdb1 /home/udisk
上面的命令,其中 "-o iocharset=utf8" 是用于解决U盘挂载之后的字符乱码问题。
取消挂载:umount 挂载点,可以通过df -好的命令查看当前文件系统的状态。umount /home/udisk
NAT和桥接的优缺点
桥接:优点同一个局域网中的任意一台物理机想要访问虚拟机时,只要拥有账户和密码,就可以直接进行通信。缺点:如果宿主主机没有连接网络,那么虚拟机也就不存在与该真实网络环境中,换句话,虚拟机使用桥接模式的时候,它的网络依赖于宿主的网络环境。
NAT:优点,可以无视物理机(宿主主机)网络环境。即便是物理机没有网络,也不影响本机和虚拟机进行通信,也不影响本机上的其他虚拟机之间互相通信。NAT模式。我们真正和互联网通信的网卡是VMnet8(192.168.245.2),Vmware netwok Adapter VMnet8(它是用来和虚拟机进行通信:例如通过本地xshell连接我们的虚拟机) 缺点:其他物理机想要访问NAT模式下的虚拟机时,比较麻烦。
Linux小技巧:
通过主机名查看ip host www.baidu.com
从本机拷贝数据到远程的服务器上:必须知道对方的账户和密码,且具备相应的权限。语法cp [-r] [path]/fie | dir {UserName}@Host_IP:/[path] 案列:scp /root/install.log [email protected]:/home
从远程服务器上拷贝数据到本机:必须知道对方的账户和密码,且有相应的权限 语法:scp {UserName}@Host_IP:/[path]/file /[path] 案列cp [email protected]:/home/install.log /root
登录远程服务器:语法:ssh {UserName}@Host_IP 如果想退出当前登录 exit
Linux自带下载工具:
用于从网络上下载资源,没有指定目录,下载资源默认存储到当前目录。
wget [参数] [URL地址]
–支持断点下载功能
–同时支持FTP和HTTP下载方式
–支持代理服务器
使用wget下载单个文件
wget http://www.tedu.cn
使用wget -O下载并以不同的文件名保存
wget -O NewName.new http://www.tedu.cn
使用wget --limit-rate限速下载(单位,byte/秒)
wget --limit-rate=20k http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2
使用wget -c断点续传
wget -c http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.25.tar.bz2
使用wget -b后台下载
wget -b http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
wget http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
使用wget -i下载多个文件
wget -i urlfile.txt # urifile文件名称仅仅为了见名知意。
urlfile.txt内容为
http://www.tedu.cn
http://big.tedu.cn/index.html