嵌入式 Linux 学习笔记
新安装的Ubuntu系统,虽然已经设置了用户名和密码,但没有设置 root 用户的密码,所以,这时如果要使用 root 权限,只能用 sudo 命令。

下图中,在没设置 root 密码的情况下,直接对根目录写数据(创建 test.c 文件)时,系统会提示:Permissioin denied。
所以我使用 sudo 命令来获取 root 权限以达到对根目录写数据的目的,使用 sudo 命令输入的密码是用户密码,而 su ( su root )命令需要的密码是 root 用户的密码。

由于我还没设置 root 密码,所以无论我输当前用户的密码还是直接回车,都提示失败。
在这里插入图片描述
要想设置 root 密码,只需要输入命令:sudo passwd root
在这里插入图片描述
那么这样我就产生了一些疑问,比如
竟然可以用 sudo 执行 root 权限,为啥还要用 su 呢,这样的话是不是连 root 密码都不用设置了?
我目前只能用以下几点来解释为什么最好给 root 设置个密码了:

  1. 使用sudo命令获取 root 权限后是有时间限制的(默认是几分钟),而且普通用户使用 sudo 获取到root 权限后可使用的命令是被 root 用户控制的,而这类控制文件在 /etc/sudoer 里:
    在这里插入图片描述
    这个文件里特地标注了 “This file MUST be edited with the ‘visudo’ command as root

  2. 所有用户使用 sudo 后的操作都会被记录在日志文件中,/var/log/ 路径下有很多 log文件,其中 auth.log 是用来记录用户授权登录的日志文件,但使用 su 命令后的命令操作是不会被日志记录的。
    如下图,我先让普通用户使用 sudo 暂时获取root 权限,然后在根目录下创建一个文件,接着 使用 su 命令以root用户登录,最后我让 root 用户删除刚刚创建的文件。
    在这里插入图片描述
    查看日志文件(见下图)发现:
    在03:01:54 的时候,日志中有这么一段话:"ubuntu sudo: xiaohui : TTY=pts/4 ; PWD=/home/xiaohui ; USER=root ; COMMAND=/usr/bin/touch /test.c"
    它记录了
    ①使用 sudo 的用户的用户名
    ②工作路径(PWD)
    ③授权对象的用户名(USER)
    ④使用的命令(COMMAND)
    但03:02:21的时候,只有普通用户使用 su 命令后成功变为 root用户的记录
    "ubuntu su[2477]: Successful su for root by xiaohui"
    而没有出现 root 用户删掉 /test.c 文件的记录。
    在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐