Linux文件和用户权限以及SSH操作

一、文件和用户权限

1.文件详细信息

  使用ls -l可以查看文件详细信息
Alt text
在显示的文件详细信息中:
  1列:表示文件的属性。“-”表示文件,“d”表示文件夹,“l”表示快捷方式(链接)
  2-4列:表示当前用户对文件的操作权限
   1). r 可读 2^2 = 4
   2). w可写 2^1 = 2
   3). x可执行2^0= 1 (最高权限是7)
  5-7列:表示当前用户所在的用户组对文件的操作权限
  8-10列:表示当前用户所在的用户组以外的用户对文件的操作权限
  11列:代表文件的链接数
  12列:代表当前用户
  13列:代表当前用户所在的用户组
  14列:代表文件大小
  15列:代表文件创建或修改时间

2.更改文件所属用户和用户组

1
2
3
  chown  用户名   文件名    #改变文件所属用户名
  chgrp 用户组 文件名 #改变文件所属的用户组
  chown 用户名:用户组 文件名 #直接改变用户名和用户组

3.更改文件权限

  上面介绍了文件的三种权限,分别是当前用户权限,当前用户组权限,用户组以外的用户权限,权限最高是7。

1
  chmod   700  文件名   #当前用户有所有权限,其他用户没有权限.

  使用这个语句来改变文件的操作权限。

删除文件

rm -d 目录名 #删除一个空目录
rmdir 目录名 #删除一个空目录
rm -r 目录名 #删除一个非空目录
rm 文件名 #删除文件

二、SSH服务器远程登录

1.映射关系

  我使用两台虚拟机来模拟多台服务器之间的远程登录。使用Vmware虚拟机,安装了两个ubuntu(ubuntu kylin 16.04 LTS)的系统。
  首先通过ifconfig查看两台linux的ip地址。如下图所示:
Alt text

Alt text
  使用vim打开vim /etc/hosts 查看ip和域名之间的映射关系(这里的域名是指电脑的名称,例如我的电脑名是:work1-pc,另一台电脑的名称是:gavin-pc。使用vim /etc/hostname 可以更改这个域名,不会使用vim的可以直接在/etc/hostname这个路径里面找到hostname文件,直接使用gedit 打开。注意:这里的电脑名不是管理员用户名!),当我们要访问远程服务器的时候,可以直接访问域名,远程服务器就会自动解析/etc/hosts 来定位远程机器的ip地址,从而访问远程机器。打开/etc/hosts文件:

Alt text
  在这个我们可以看到,work1-pc域名对应的ip地址是127.0.1.1,都是本机地址。使用work1-pc,要想ping gavin-pc,我们可以ping 192.168.111.136.但是如果我们想直接ping gavin-pc,只能把192.168.111.136 gavin-pc 这个映射关系添加在work-pchosts文件中。于是这样:
Alt text
这时我们直接ping gavin-pc 就能ping通。同理,我们可以在另一台电脑ping通这台电脑,这里就不演示了。

Alt text

2.SSH远程登录

  SSH是linux中一种网络协议,用来计算机中加密登录,是在用户计算机中登录另一台远程计算机。
  首先安装SSH和rsync自动同步服务

1
2
apt-get install ssh   安装ssh服务
apt-get install rsync 安装自动同步服务

安装完SSH,可以使用SSH localhost来测试SSH服务是否安装成功。
Alt text
  SSH是由客户端和服务端,这里我两个电脑都安装了客户端和服务端。
  那么一台计算机是怎样通过SSH来远程控制另一台电脑的呢?这里要说一下SSH的公钥加密方式。

1
2
3
  1.远程主机接收到用户的登录请求,主机就会把自己的公钥发给用户计算机;
  2.用户使用公钥,然后把加密后的登录密码发送给远程主机;
  3.远程主机使用自己的私钥,解密登录密码,如果正确同意登录。

  但是这种加密方式是有风险的,因为如果一个人伪造公钥,将公钥发送给用户,解密登录密码后登录远程主机。这就是中间人攻击
  SSH协议使用口令登录的方式来解决这个问题。当第一次登录的时候,会显示:
Alt text
  显示无法验证远程主机的真实性,知道公钥,询问是否连接。
  远程主机将用户的公钥,保存在登录后的用户主目录的**/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。于是我们可以将远程主机的公钥文件~/.ssh/id_rsa.pub复制到用户计算机上,然后将公钥文件追加到authorized_keys文件中,然后将追加过的authorized_keys文件,直接覆盖远程主机的authorized_keys**文件,于是此时两台计算机可以相互通过SSH连接。

1
2
3
4
5
6
gavin-pc中:
root@gavin-pc:~# scp ~/.ssh/id_rsa.pub root@work1-pc:/root/Downlpads //将公钥文件发送到work1-pc的downloads文件夹中

work1-pc中:
root@work1-pc:~/Downloads# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys //将公钥追加进authorized_keys文件中
root@work1-pc:~# scp ~/.ssh/authorized_keys root@gavin-pc:~/.ssh/authorized_keys //将authorized_keys 文件,同步到gavin-pc中

  操作完成后,可以通过任意一台计算机远程连接另外一台计算机。