2021-12-02 迈向程序猿的第四十步

目录

一.文件权限命令

1.1 linux系统相对安全的原因

1.2 文件权限的种类

 1.3 文件属性解析

1.4 文件权限的针对者

1.5 文件的权限修改(chmod)

1.6 文件所属组的修改(chgrp)

1.7 文件拥有者的修改(chown)

二.sudo指令的应用

2.1 sudo简介

2.2 sudo的配置

2.2.1 修改文件的方式

2.2.2 visudo

三.软件管理机制

3.1 linux软件管理介绍

3.2 二进制安装

3.2.1 JDK的安装

3.3 rpm机制安装

3.3.1 MYSQL的安装

3.4 yum在线安装机制

3.4.1 NGINX的安装

四.LINUX的其他常用操作

4.1 虚拟机的克隆

4.2 scp指令


一.文件权限命令

1.1 linux系统相对安全的原因

1. 使用Linux系统的人数少,尤其在国内,很少有人关注Linux。
2. 因为Linux开源,任何的系统漏洞都会被民间高手,或者是官方人员很快的发现。从漏洞的发现到补丁的放出,时间相当短,没有时间给病毒或者黑客作乱的机会。
3. 然后就是linux的权限管理,linux的权限管理很严格。病毒或者黑客想修改系统文件或者系统日志,除非有管理员密码。所以就算中了病毒,病毒的危害也非常的小,重要的系统文件都不会被破坏。所以发现了病毒稍做处理就搞定了。
4. 还有就是linux系统的程序管理。linux安装程序,基本都是利用程序管理软件,比如ubuntu、debian下的软件中心、centos,fedora和红帽的yum。linux系统安装程序基本上都是用软件管理程序,从程序开发者官网上或者是相应的发行版社区直接下载安装。不会有被恶意篡改的软件被安装到使用者的电脑上。

1.2 文件权限的种类

 1.3 文件属性解析

[[email protected] ~]#  ls -l 
-rw-r--r--  1     root  root   302    8月27 9:24  namelist  
【 1 】    【2】   【3】  【4】   【5】    【6】        【7】

解析:
   第一列:由10个字符组成。第一个字符表示文件类型,第2~10个字符表示权限
         权限由9个字符构成: 前三个字符表示owner拥有的权限
                          中间三个字符表示group下的所有成员拥有的权限
                          后三个字符表示other的权限
   第二列:文件的硬链接数
   第三列:owner的名称
   第四列:group的名称
   第五列:文件大小
   第六列:该文件的最后一次访问时间    
   第七列:该文件名 

1.4 文件权限的针对者

从文件属性的第一列的解析来看,文件的权限是针对于三种不同用户来设定的

  • 拥有者,即文件的owner

  • 用户组,即文件的所属组

  • 其他人,即除了上述两种情况的其他情况,称为others   

1.5 文件的权限修改(chmod)

语法1:chmod [ugoa][+-=][rwx] [filename]    该指令只能是root和owner自己使用
	 解析:
	    u: 表示owner,即第2~4个字符
	    g: 表示group,即第5~7个字符
	    o: 表示other,即第8~10个字符
	    a: 表示all, 即所有人
        +: 表示在原有的权限上添加新权限
        -: 表示在原有的权限上撤销权限
        =: 覆盖原有的权限,授予新权限 
语法2:chmod [421] [filename]
      解析:第二个参数中的三个数字分别表示owner,group,other的权限
           即每个数字表示某一个身份的权限之和。





案例1:赋予文件file1所属组写权限
      chmod g+w file1
案例2:取消所有者,用户组,其他人三个部分对file1的写权限
      chmod ugo-w file1
案例3:设定目录dir1为所有用户具有全部权限
      chmod 777 dir1 
      
案例4:chmod 763 file1
		7表示拥有者的权限是可读可写可执行  
		6表示所属组的权限是可读可写
        3表示其他人的权限是可写可执行
扩展====================>
文件和目录创建后有默认权限:

    root身份创建的:
      文件:644
      目录:755
    普通用户创建的:
      文件:664
      目录:775

赋值权限问题:
    针对于文件而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果文件有执行权限,则必须给读权限。
            合理性问题:如果文件有写权限,应该给读权限
    针对于目录而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果有r权限,应该赋予x权限
            如果有w权限,应该赋予x权限

1.6 文件所属组的修改(chgrp)

格式:chgrp [-R] [newGroup] filename          该指令只能是root用户使用
功能描述:改变文件或目录的所属组

案例1:  改变文件file1的所属组为adm
            chgrp  dam  file1
案例2:修改目录dir1及其子目录和文件的用户组为michael
            chgrp -R michael dir1

1.7 文件拥有者的修改(chown)

格式1:chown [-R] [newOwner] filename       该指令只能是root用户使用
参数: -R 表示递归修改拥有者

案例1:改变文件file1的所有者为nobody
	chown  nobody  file1
案例2:修改目录dir1及其子目录和文件的拥有者为michael.
	chown -R michael: dir1
           
格式2:chown  newOwner:newGroup filename   #可以有chgrp的功能
案例3:将install.log的拥有者与群组改为root 
	chown root:root install.log
案例4:修改目录dir1的用户组为root
	chown .root dir1

二.sudo指令的应用

2.1 sudo简介

有的时候,在操作和管理Linux时,我们需要切换成root身份才能进行,比如修改权限等。su可以用于切换成root账号,但是需要使用root账号的密码(管理员把自己的密码给普通用户 不合适吧)。

sudo,则是root给普通用户的一个特殊指令,普通用户不用再特意切换成root身份,就可以使用root才能使用的一些指令。仅仅需要普通用户自己的密码即可(通过配置,甚至可以不用密码)

当然,普通用户拥有sudo的使用权,必须是管理员root事先通过审核,才能开放给普通用户的。(即,除非是信任用户,否则一般用户默认是不能操作sudo的)

2.2 sudo的配置

2.2.1 修改文件的方式

方式1:root用户直接vi /etc/sudoers  然后强制保存
方式2:直接输入牛掰哄哄的visudo

2.2.2 visudo

[[email protected] ~]# visudo

进入后,找到第100行和110行。

- 在100行的 root ALL=(ALL) ALL下面填写          		---配置这个,就可以使用sudo了。       
  scott  ALL=(ALL)   ALL
- 在110行的 #%whell  ALL=(ALL)  NOPASSWD:ALL下面填写	--配置这个,就可以不用再输入密码了
  scott  ALL=(ALL) NOPASSWD:ALL
  
  
-解析:   scott  ALL=(ALL) ALL
	第一列:使用sudo的账号
	第二列:客户端计算机主机名
	第三列:可切换的身份
	第四列:可使用的指令,注意使用具体指令时需要使用绝对路径,多个指令用逗号分开

三.软件管理机制

3.1 linux软件管理介绍

- RPM

  这个机制最早是由Red Hat这家公司开发出来的,后来实在很好用,因此很多distributions就使用这个机制来作为软件安装的管理方式。包括Fedora、CentOS、SuSE等知名的开发商。

- DPKG

  这个机制最早是由Debian Linux社群所开发出来, 通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,非常不错。只要是衍生自Debian的其他Lunix distributions大多使用了dpkg这个机制来管理软件的,包括B2D,ubuntu等。

- 第一种方式:我们人工的一步一步的检测和安装所依赖的软件,直到依赖环境都存在。
- 第二种方式:就是使用一种自动管理机制,先获取依赖关系做成列表,查看平台是否已经存在所需要的环境,如果不存在,自动管理机制通过依赖关系,来获取所需要的软件,进行顺序安装,从而解决这样的问题。

3.2 二进制安装

3.2.1 JDK的安装

步骤1)上传jdk的二进制安装包  jdk-8u221-linux-x64.tar.gz,比如上传到/root/下

步骤2)解压jdk安装包

```shell
[[email protected] ~]# tar -zxvf ./jdk-8u221-linux-x64.tar.gz -C /usr/local

```

步骤3)切换到/usr/local下并更名

```shell
[[email protected] ~]# cd /usr/local
[[email protected] local]# mv jdk1.8.0_221/  jdk
```

步骤4)配置环境变量

环境变量的配置有三个位置可选,分别是以下三个位置

```
/etc/profile		:系统级别的环境变量配置文件    所有用户都可以使用
~/.bash_profile		:用户级别的环境变量配置文件    只对于一个用户好使
~/.bashrc			:用户级别的环境变量配置文件    只对于一个用户好使
```

注意:真实环境中,我们应该选择用户级别的环境变量,这样的好处是,即使配错了,我们可以使用root账号来帮助修改。如果是系统级别的,配错了的话,root账号也不好使了,得另想办法,麻烦死了。

但是在学习期间,避免麻烦,直接配置系统级别的环境变量即可。

```shell
[[email protected] ~]#vim /etc/profile
........省略...................
# JDK environment
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH


小贴士:原有的PATH值拼在新值的后面
```

步骤5)让环境变量生效(刷新环境变量)

```shell
[[email protected] ~]# source /etc/profile
```

步骤6)验证是否生效

```
[[email protected] ~]# java -version
[[email protected] ~]# javac
```

扩展:二进制软件包的安装还有执行程序式的安装,只需要运行安装指令后,跟着提示进行下一步下一步的操作即可。类似于windows平台上的软件安装界面。

3.3 rpm机制安装

3.3.1 MYSQL的安装

步骤1)上传mysql相关的软件包,比如上传到/root下

```
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
```

步骤2)拆包

```shell
[[email protected] ~]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
[[email protected] ~]# ll

mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm

小贴士: 其实我们是想安装mysql-community-server-5.7.28-1.el7.x86_64.rpm
```

步骤3)安装mysql

```shell
1. 先检查是否安装了mariadb, 如果已经安装,就卸载掉
[[email protected] ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[[email protected] ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
2. 安装mysql-common
[[email protected] ~]# rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
3. 安装mysql-lib
[[email protected] ~]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
4. 安装mysql-client
[[email protected] ~]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
5. 安装mysql-server
[[email protected] ~]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

--------------------------到此为止,rpm安装完毕 -----------------------

	mysql在linux中的服务项叫mysqld

6. 启动mysql的服务项mysqld
[[email protected] ~]# systemctl start mysqld
[[email protected] ~]# systemctl status mysqld   并查看

7. 查看mysql提供的默认密码,并复制,   注意,如果服务项启动失败,则不会产生mysqld.log文件
[[email protected] ~]# cat /var/log/mysqld.log | grep password

8. 登录mysql,并修改密码
[[email protected] ~]# mysql -uroot -p'9Pe%mQVcs-#<'    回车即可
.... 进入后,修改密码
mysql> alter user [email protected]'localhost' identified by '@Mmforu45';


9. 如果想要远程连接该机器上的mysql server, 那么mysql server需要进行远程授权
mysql> grant all privileges on *.* to [email protected]'%' identified by '@Mmforu45';

然后可以在windows启动navicat 远程连接linux上的mysql了。
```

3.4 yum在线安装机制

3.4.1 NGINX的安装

1) 下载源码包,并解压到你喜欢的位置

```shell
[[email protected] ~]# tar -zxvf nginx-1.8.0.tar.gz  -C /usr/local
```

2)进入该软件的家里

```shell
[[email protected] ~]# cd /usr/local/nginx-1.8.0
```

3)执行配置信息

注意:需要c语言环境提前安装好

```shell
[[email protected] ~]# yum -y install gcc-c++
[[email protected] ~]# yum install -y pcre pcre-devel
[[email protected] ~]# yum install -y zlib zlib-devel
[[email protected] ~]# yum install -y openssl openssl-devel
```

安装好环境后,在配置nginx的属性信息

```shell
[[email protected] nginx-1.8.0]# ./configure 
    --prefix=/usr/local/nginx-1.8.0 
    --pid-path=/usr/local/nginx-1.8.0/tmp/nginx.pid 
```

4)在家里执行编译指令

```shell
[[email protected] nginx-1.8.0]# make
```

5)在家里执行安装指令

```shell
[[email protected] nginx-1.8.0]# make install
```

如果出现了bin或者sbin目录,则表示安装成功。

6)清空缓存

```
[[email protected] nginx-1.8.0]# make clean
```

四.LINUX的其他常用操作

4.1 虚拟机的克隆

步骤1)先克隆机器

```
先关掉要克隆的机器,然后
右键点击机器名称--->管理-->克隆-->虚拟机的当前状态-->创建完整克隆-->虚拟机名称--完成
```

步骤2)修改IP和主机名以及映射文件,然后重启

```shell
[[email protected] ~]# hostnamectl set-hostname xxx02
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[[email protected] ~]# vim /etc/hosts
[[email protected] ~]# reboot
```

步骤3)测试是否可以通信

```
[[email protected] ~]# ping xxx02
[[email protected] ~]# ping xxx01
```

4.2 scp指令

作用:用于远程拷贝文件
语法:  scp [-r] filename....  远程用户名@远程机器IP:pathname 

(=-=!!!,最近学习的压力稍微有点点大了,每天接收的东西有点过载,全都是新的概念,还需要不断去熟练各种命令,多少有点手忙脚乱,但幸运的是身边有厉害的人进行指导解惑,努力坚持,小白相信所熬的夜都不会白费,每天的努力,不管大小慢慢积累,最终会带来意想不到的收获,目前要做到的就是收心,抛开一切不该有的杂念,然后默默前行,即便这条道路上只有一个人,也不用怕,因为成功总是掌握在少数人手中!一起努力,冲冲冲~~~)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>