su命令

  • su命令是切换用户的。(su - 用户名 加个-是为了更好的切换用户,配置 环境变量等)
  • 可以用whoami 和id 查看当前用户名。
  • 不加- 也可以 当前用户在root下, 目前虽然是yingxin用户 但是还没完全切换过来。
  • 加上- 会在自己的家目录下, 会有自己当前用户的配置文件 比如.bash 这类文件。
  • 可以通过su命令 以不登录普通用户的身份去执行一条命令
  • su - -c +“要执行的命令”+ 用户名
  • 做个实验:
  • 也可以登录其他用户,比如登录user5 进去后发现不是正常的命令行, 是因为user5之前创建的时候,没有家目录,也没有用户的配置文件加载。
  • 少用户的家目录就创建一个
  • 做个实验:创建家目录 然后修改目录的属主和属组
  • 再去切换 user5用户发现还是不行,因为user5下没有任何的配置文件(就是上面提到的.bash)
  • 因为有了这些配置文件,所以才会有正常的命令行、
  • 系统有一个模版目录 etc/skel/ 可以把下面的.bash文件cp到user5下面去。
  • 这里要使用“*” 通配文件,可以把所有.bash的文件cp过去。
  • 还要记得修改所有者和所属组
  • 这里用到!$ 是表示上一行最后一个参数。
  • 再切换到user5 显示正常了,
  • 普通用户的前缀 是$ root的是#
  • 普通用户也可以切换到root

sudo命令

  • 为了增加安全系统其实还有一个命令是sudo 它可以让普通用户临时去执行一条命令,以指定用户的身份去执行,通常都是给普通用户root 的身份。

  • 可以用visudo 去打开看一下配置文件。这个配置文件很重要 不要用vi去编辑。(实际上打开的etc/sudoers) 如果编辑错误,检测不到,但是用visudo可以检测到。

  • 这个是整个文件最核心的配置,表示允许所有用户去运行所有命令,在任何地方。

  • 这里以后的配置就写成ALL=(ALL),不要改动。

  • ()里面是指用户,就是说 yingxin用户将会被授予那个用户的身份。这个和set_uid相似 但是不一样。

  • 后面的 ALL是所有的命令。

  • 也可以写一个或者多个命令 ,写入并保存。 做个实验:

  • 退出后提示有错误,按e从新编辑一下。

  • 提示是99行有错误,可以用: set nu 查看行数。

  • 99行就是刚才实验编辑的行数,证明我们编辑的不对,可以去上面参考一下系统是怎么写的。

  • 是用逗号分割,但是要加空格,也要写绝对路径。只写刚才的命令,不知道你的命令在哪里。

  • 如果不知道命令在那个目录下,可以再开一个窗口 去which查看

  • 继续实验,加上空格和 绝对路径、

  • 保存并退出。发现没问题了,切换到yingxin用户下。

  • 切换后发现root目录的权限可以使用,是因为设置了 set_gid 我们给他去掉。

  • 去掉后就不能使用root目录了, 我们再使用sudo 去执行命令。执行后需要使用yingxin的密码,输入后,就可以查看root目录了。

  • 再次查看,也不用密码了。

  • 一样可以sudo cat 查看 但是3.txt下面没有东西,

  • 这就是sudo的用法,可以让一个普通用户运行root用户的权限,这样就不用把root用户的密码告诉普通用户。

  • 继续看visudo 还有一些用法。

  • 我们也可以给user5写入sudo的权限,但是输入密码很麻烦,可以在前面加NOPASSWD: 就不用输密码了。(这里必须用大写)

  • 保存退出,切换到user5 直接进去没有输入密码,这里也可以用绝对路径查看 和不用绝对路径一样。

  • 再进visudo 可以看一下,里面也有Alias (别名) 有设备别名,有命令别名 前面的是虚拟别名,后面的是真实的命令或者设备。

  • 我们也可以模仿写一个 虚拟别名,第一个字母必须大写。然后下面的 也可以改为YINGXIN_CMD

  • 退出保存,切换到yingxin用户下。使用sudo ls/root/ 输入密码,可以使用 这就是命令别名。

  • wheel是用户组,假如想把所有用户都方便使用sudo 的命令 可以把所有用户放在wheel组里,再对wheel组进行编辑 就可以实现多用户修改了。


限制root远程登录

  • 直接登录root用户是有危险性的, root用户用密钥登录还好,如果设置的是密码,简单的容易被猜到,复杂的也可能被获取。 我们可以限制root远程登录。只允许普通用户登录, 想用root的权限,可以用sudo,也可以用su切换到root。
  • 逻辑:root用户不能登录了,只能登录普通用户(比如yingxin user3。user5) 然后在普通用户下su到root用户,但是不知道root用户的密码 这个时候就要用sudo su 到root。
  • 做个实验,给User 做一个别名 下面是普通用户
  • 再设定一个规则,把普通用户拥有root用户身份,执行su命令 不用输入密码。
  • 保存,退出 然后登录普通用户yingxin
  • 使用sudo - su 就可以进去root用户了。

  • 前提是要限制root远程登录,不然做这个没有意义。
  • 所以要去限制root远程登录, 之前有一个文件etc/ssh/sshd_config 这里可以修改root用户的登录
  • 把#去掉 yes改为no
  • 然后重启服务
  • 重启后 打开 已经无法登录 使用root密码也不可以登录了。
  • 我们先用Putty来登录一个普通用户yingxin
  • 可以用w查看都谁在使用它。
  • 打开root目录 权限不够, su切换到root 又不知道密码。
  • 就可以用刚才设置的 sudo su - root 进去root用户了。
  • 为了以后实验方便 还是要改回来

  • 这个章节学的 创建删除组,创建删除用户,用户的修改,passwd su sudo