Linux入门——第六课——让渡用户权限、用户配置文件

如何在Linux让渡根用户的部分权限给其他用户?

——在多人共管主机、某些用户请求执行某些需要根用户权限的命令时候,或者干脆是当忙不过来的时候,就需要共享根用户权限。(显然让很多人知道根用户的密码并不是一个好的选择)

sudo命令:不需要根用户密码,也可以执行根用户权限的命令。通过该命令,可以给普通用户一些合理的权利,可以运行一些只有root用户或者特定用户才能执行的权限,比如reboot或者shutdown之类的命令。

一开始系统默认只有root用户可以执行sudo命令。需要通过etc/sudoers文件来让别的用户也能执行sudo命令。注意:etc/sudoers文件也只有root用户可以修改。

在root用户的工作环境下,用vi/etc/sudoers打开etc/sudoers文件,

Linux入门——第六课——让渡用户权限、用户配置文件

(在没有改动的情况下,文件有100多行)

Linux入门——第六课——让渡用户权限、用户配置文件

第一个字段,表示可以使用sudo命令的用户,这里是root;

第二个字段,等号前面表示登录用户的来源主机名,等号后面是可让渡权限的用户列表。

第三个字段,表示用户可使用的命令列表。

在这,这一行就表示root用户可以用任意主机地址登录,并且以任意身份执行所有的命令。

添加一行:

Linux入门——第六课——让渡用户权限、用户配置文件

表示:nboocer可以在任何地方登陆,以任意用户身份执行任何命令。

保存sudoers文件,退出vim。开始试验:

Linux入门——第六课——让渡用户权限、用户配置文件

此时,输入nboocer的密码就可以执行命令了,注意:输入的是nboocer的密码,并不是root密码。

Linux入门——第六课——让渡用户权限、用户配置文件

sudo -u root 命令

以上用sudo命令以root身份执行命令的时候,可以省略-u选型,命令是默认转化为root身份,但是不建议这样做。

例子:

Linux入门——第六课——让渡用户权限、用户配置文件

这一行表示:表示stu用户从mooc主机登录,由于mooc事实上是本主机名,也就是stu在本地登录时,可以用root身份,执行/sbin/shutdown -h 5这个命令,注意:命令得以绝对路径的方式输入。

Linux入门——第六课——让渡用户权限、用户配置文件

执行其他root用户才能执行的命令时,就会显示无权执行:

Linux入门——第六课——让渡用户权限、用户配置文件

还可以更改输入的命令:

Linux入门——第六课——让渡用户权限、用户配置文件

这个关键字表示允许stu用户在本地登录主机时,可以以root身份,执行/sbin/shutdown -h 5这个命令,并且无需输入用户密码。但是为了安全考虑,建议不要取消输入密码。

我们还可以按照用户组进行配置:

Linux入门——第六课——让渡用户权限、用户配置文件

表示从属于group_p用户组的用户,在本地登录时,可以以root身份,执行/sbin/shutdown -h 5这个命令。

Linux入门——第六课——让渡用户权限、用户配置文件Linux入门——第六课——让渡用户权限、用户配置文件


用户配置文件

Linux“用户管理”中所涉及的四个配置文件,这四个文件是用户管理的核心。系统中用户、用户组的任何操作,都依赖于这四个文件。这四个文件可以分为两组,第一组文件(/etc/passwd和/etc/shadow)存放着用户相关配置数据,另一组文件(/etc/group和/etc/gshadow)存放着用户组相关配置数据,如下:

Linux入门——第六课——让渡用户权限、用户配置文件


/etc/passwd是系统用户的花名册,系统所有的用户都在文件中记录,如果不在这个花名册中,就不是这个系统的用户。

用vim打开/etc/passwd,结果如下:

Linux入门——第六课——让渡用户权限、用户配置文件

有很多行,每一行存储了系统中一个用户的信息。一行有7个字段,每个字段由冒号分隔开。

比如:

Linux入门——第六课——让渡用户权限、用户配置文件

第一个字段是用户名,该用户名是nboocer01;第二个字段是密码,该例子中是x,真的密码是放在/etc/shadow文件里的;第三个字段是用户的UID,是系统中用户的标识,每个用户都有一个独一无二的UID;第四个字段是用户的主用户组GID,GID用来唯一的标识系统中的用户组;第五字段是对用户的一些描述,这是可选的,可以不设置,在这里是空白,没有设置。第六个字段是用户家目录所在的位置,nboocer01这个用户的家目录是在/home下面,和用户名同名,就叫nboocer01;第七字段是用户所使用的SHELL名称。


etc/shadow文件:是etc/password的影子文件,

Linux入门——第六课——让渡用户权限、用户配置文件

在正常情况下,etc/shadow文内容的行数跟etc/password文件内容的行数应该是相同的,etc/shadow文件每行也存储中系统一个用户的一些信息,shadow文件和password文件两个互为补充,两个文件合在一起的时候就可以完整描述系统中一个用户。

Linux入门——第六课——让渡用户权限、用户配置文件

那为什么要讲用户的信息的分开?

——>出于系统需求,password文件对所有用户都是可读的, 因为用户一些需要保护的信息,如登录密码就要放在shadow文件中,shadow文件只有root用户有权限查看和修改。

在root用户权限下,用vim打开etc/shadow文件。


shadow文件内容,每一行描述一个用户的相关信息。shadow文件每一行有九个字段,每个字段用冒号分隔开。

Linux入门——第六课——让渡用户权限、用户配置文件

第一字段是用户登录名;第二名是被加密的用户的密码,一般都是长长的字符串,如果该字段是!或者是*,表示这个用户不能作为普通用户正常登陆系统;第三个字段是密码最后一次修改时间,表示的是从某个刻起,到用户最后一次修改密码时的天数,在CentOS中,起点是1970年1月1号;第四个字段是密码修改最小时间间隔,默认情况是0,是可以随时改动的意思;第五个字段是指用户密码保持有效的最大天数,默认是99999,表示密码不强制更改的意思;第六个字段是密码失效警告时间,表示从系统开始警告用户,到用户密码正式失效的天数,默认是7。第七个字段表示用户口令作废多少天后,系统会禁用次用户,禁用后,系统不允许该用户登录,默认情况下为空,表示不使用此功能;第八字段表示用户失效时间,给出的是绝对的天数,如果使用该字段,表示规定了用户的生存期,期满后,表示该用户不再是一个合法的用户,默认情况下,该字段是空的,表示此用户永久可以用;第九字段为保留字段,目前为空。

作为初学者,一般不会用到3~8字段,仅作了解。

例子:


理论上来说,可以在shadow文件和password文件中修改用户相关的信息来修改用户的配置,但是强烈不建议这么做,会导致系统管理的混乱。


与etc/password文件相似,etc/group文件则是用户组的花名册,系统中所有的用户组都在文件中有记录,每一行都存着一个用户组的信息。每一行都有四个字段。

Linux入门——第六课——让渡用户权限、用户配置文件

第一字段是用户组名,第二字段是用户组密码,对于我们来说很少用到,真的密码放在gshadow文件中,第三段是用户组的GID,第四段式从属该用户组的用户列表,每个用户之间用逗号分隔开,注意:当该字段为空时,并不一定表示用户组中没有用户,因为如果该用户组是某个用户组的主用户组,这个用户是不会显示在列表中。


etc/gshadow文件,是etc/group的影子文件,在正常情况下,etc/gshadow文内容的行数跟etc/group文件内容的行数应该是相同的,etc/gshadow文件每行也存储中系统一个用户的一些信息,gshadow文件和group文件两个互为补充,两个文件合在一起的时候就可以完整描述系统中一个用户。

将用户组的信息分开存储的原因和把用户信息分开存储的原因是一样的。