Linux基础(学习笔记一)

  1. 系统概述:
    1. 概述:

      Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

    2. 特点:

      1. 开源:不完全免费,因为有些系统加入了收费软件。

      2. 多用户:系统可以保证个用户之间的安全和隐私。

      3. 多任务:同时开启多个应用程序。

      4. 良好的界面:Linux同时具有字符界面(命令行)和图形化界面。DOS当时就是现在的cmd,不存在图形化界面。

      5. 支持多平台:可以在多种硬件平台上安装和运行,如pc或服务器或嵌入式系统,现在的安卓系统底层就是Linux的核心。

    3. 应用领域:国内大部分应用于企业的服务器上和超级计算机。大部分环境是,在Windows上开发,在Linux系统上进行部署。

  2. VMware安装Centos:略

  3. 设置静态IP:略

  4. 用户管理:

    1. 创建一个普通用户,使用默认值。useradd tom

    2. 创建伪用户:useradd -s/sbin/nologin test3

    3. 修改test账户的UID :usermod -u 9000 test1

    4. 修改账户的附加组为test、test1:usermod -aG root,adm jerry

    5. 将test5的伪用户状态修改为正常用户:usermod -s /bin/bash test5

    6. 删除:userdel 【选项】 {username} :userdel zhangsan(执行完成以后在home下依然留下了张三的家目录),userdel -r lisi(执行该命令以后,home目录中的lisi目录也会一并删除,且不保留它的工作文件)

  5. 密码管理:语法:passwd 【选项】 {username}

    1. 管理员修改别人密码:passwd {UserName}

    2. 修改自己密码:passwd 

    3. 锁定zhangsan账户:passwd -l zhangsan

    4. 解锁zhagnsan账户:passwd -u zhagnsan

    5. 删除zhangsan账户密码:passwd -d zhagnsan

  6. 用户身份切换:

    1. su {UserName}:表示切换用户以后,依然停留在当前目录

    2. su -{UserName}:表示切换用户后,去到该用户的家目录

  7. 用户组的增删改:

    1. 创建:

      1. 语法:groupadd【选项】{groupGID}

      2. 选项:-g GID指定新用户组的GID,-o通常与-g同时使用,使新用户组可以与系统已有的组ID系统

      3. 系统底层会将来给你个GID相同用户组识别为同一个用户组,这样做的目的是让来给你个用户组的权限相同。识别规则,后者遵循前者

      4. 案列:

        1. 新建一个用户组groupadd group1,此命令向系统中增加一个新组group1,新租的组标识号,在当前已有的最大组表示号的基础上加1.

        2. groupadd -g 101 group2,此命令向系统中增加了一个新组group2,同时指定新组的标识号101

        3. 创建一个普通的用户组,并将改组添加为tom账户的附加组usermod -aG group1 tom

    2. 修改:

      1. 语法:groupmod 【选项】 {groupName},-g gid 指定新用户组的GID,-o 通常与-g同时使用,使新用户组可以与系统已有的组ID系统,-n用来修改组ID group -你newGroupName oleGroupName

      2. 案例:将组group2的组标识号修改为102 groupmod -g 102 group2   新建一个group3,并将其组名修改成big1902       groupadd group3;groupmod -n big1902 group3

    3. 删除:

      1. 语法:groupdel {groupName}

      2. 案列:groupdel big1902

      3. 注:如果删除的用户组,已经被用户追加为附加组,对应的所有用户的该附件组会被撤销掉。如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。(可以理解为像Windows中文件被占用时不能被删除。)

      4. 用户组的切换:某用户属于多个用户组时,想要访问其他用户组中的内容时,必须切换用户组才行。newgrp {GroupName}前提是该账户确实是拥有多个用户组。

  8. passwd、shadow、group文件详解

    1. passwd:root:x:0:0:root:/root:/bin/bash,passwd这个文件的每行内容由冒号隔开,分为7段

      1. 第一段:账户名,不要使用:. + /

      2. 第二段:密码,passwd这个文件是所有人都可查看,所以密码虽然是加密的,但是依然不安全。

      3. 第三段:UID:系统用来标识内部的账户,通常UID和账户是对应的关系。如果出现了两个不同账户名但是却使用的相同的UID,那么系统就将它们两个识别为同一个账户,只不过它们拥有不同的账户名、shell程序、家目录。后者遵循前者。

      4. GID:此处记录的是该账户的主组信息。

      5. 注释描述:对账户的描述信息,通常自定义账户都不写这个。

      6. 家目录:用户登录系统之后的默认工作空间,该空间除root和本人意外,默认是不允许其他人访问。

      7. shell程序:Linux、类Unix系统中的特有程序。

    2. shadow:mengxb:$1$P3i2zUC $QxgXUAArJQhNWFxl0EFaD1:17365:0:99999:7:::,

      1. 第一段:用户名
      2. 第二段:加密后的口令(注:不允许手动修改密码内容,如果含有不属于集合 { $./0-9A-Za-z }中的字符,则对应的用户不能登录)
      3. 第三段:从密码创建至今的天数,从1970年1月1日开始计算
      4. 第四段:表示上次和下次修改密码之间的间隔,如果是0表示无间隔限制。
      5. 第五段:自密码创建时刻起,最大的有效期(天)
      6. 第六段:密码到期前的N天,提醒用户修改密码。
      7. 第七段:缺省值为空,该字段允许密码到期之后N天之内还依旧可以登录
      8. 第八段:缺省值为空,该字段表示一个对对的天数,意为到期之后不允许登录,也可以理解为密码的有效存活期
    3. group:root:x0:jerry
      1. 第一段:用户组名
      2. 第二段:组的密码,通常用x或者*来表示,部分系统中没有组密码的设定
      3. 第三段:GID
      4. 第四段:组内的成员列表。文件中显示的账户名都是该组作为附加组。如果是主组,再次不给予显示。
      5. root账户和root用户是两码事,某这个账户就算是加入root组,那么也不代表它具备root权限。因为在Linux中,默认情况下,用户的权限高于用户组。
  9. 权限:在Linux系统中,有一下的权限表示:逻辑权限、物理权限、普通用户的root权限。
    1. 逻辑权限:在Linux系统中不管是文件还是目录(在Linux系统中,将所有的东西都视为文件)。都有固定权限表示。
    2. 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表示目录文件,第一个字母-表示普通文件。

    3. 后面三个权限为一组,r读4,w写2,x执行1.除了第一个字母不参与权限表示,其他的都为权限标识符,每三个为一组,共三组,第一组是用户user,第二组是用户组group,第三组是其他人other
    4. 修改文件夹/夹的权限
      1. touch test_1当前文件的权限是-rw-r--r--,将此文件的权限修改为chmod 000 test-1为此文件,每组都增加一个度的权限。
    5. 物理权限:修饰某个文件/夹不允许被修改。chattr【选项】 file/dir
      1. 选项:j表示不能以任何方式进行文件/夹的修改,增加,删除
      2. S即时更新文件或目录
      3. s保密性删除文件或目录
      4. a表示文件/夹只追加,不能修改,删除
      5. +<属性>表示开启文件/夹的权限
      6. -<属性>表示关闭文件/夹的权限
      7. R表示递归处理
      8. lsattr:查看文件的物理属性 【选项】文件/夹
        1. 选项:R表示递归处理
        2. a表示查看所有文件的属性,包括隐藏
        3. d显示目录的属性,而不是目录下的文件属性
      9. chown修改所有者的权限
      10. 普通用户的超级权限:

        sudo(SuperUser Do),它可以让普通用户执行root的权限。sudo可以限制用户执行部分root的权限。sudo会记录用户执行过的每一条命令,便于查阅服务起出事之前的状态。

      11. 好处:

        使用自己配置好的用户环境

        不需要知道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 ", because it will show the password in clear.

        #         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

  10. 挂载:因为文件系统不能直接使用,Windows的文件系统需要盘符来表示,Linux的文件系统需要目录作为入口,分区的格式就是文件系统

    1. 挂载 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盘挂载之后的字符乱码问题。

    2. 取消挂载:umount 挂载点,可以通过df -好的命令查看当前文件系统的状态。umount /home/udisk

  11. NAT和桥接的优缺点

    1. 桥接:优点同一个局域网中的任意一台物理机想要访问虚拟机时,只要拥有账户和密码,就可以直接进行通信。缺点:如果宿主主机没有连接网络,那么虚拟机也就不存在与该真实网络环境中,换句话,虚拟机使用桥接模式的时候,它的网络依赖于宿主的网络环境。

    2. NAT:优点,可以无视物理机(宿主主机)网络环境。即便是物理机没有网络,也不影响本机和虚拟机进行通信,也不影响本机上的其他虚拟机之间互相通信。NAT模式。我们真正和互联网通信的网卡是VMnet8(192.168.245.2),Vmware netwok  Adapter VMnet8(它是用来和虚拟机进行通信:例如通过本地xshell连接我们的虚拟机) 缺点:其他物理机想要访问NAT模式下的虚拟机时,比较麻烦。

  12. Linux小技巧:

    1. 通过主机名查看ip  host www.baidu.com

    2. 从本机拷贝数据到远程的服务器上:必须知道对方的账户和密码,且具备相应的权限。语法cp [-r] [path]/fie | dir  {UserName}@Host_IP:/[path]  案列:scp /root/install.log [email protected]:/home

    3. 从远程服务器上拷贝数据到本机:必须知道对方的账户和密码,且有相应的权限  语法:scp {UserName}@Host_IP:/[path]/file  /[path] 案列cp [email protected]:/home/install.log          /root

    4. 登录远程服务器:语法:ssh  {UserName}@Host_IP 如果想退出当前登录 exit

    5. Linux自带下载工具:

      wget

      用于从网络上下载资源,没有指定目录,下载资源默认存储到当前目录。

      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

你可能感兴趣的:(Linux基础(学习笔记一))