Linux学习总结2_用户权限管理

目录

1.用户管理

1.1 添加用户 useradd

1.2 删除用户 userdel

1.3 修改用户 usermod

1.4 用户密码管理 passwd

1.5 相关文件

2.用户组管理

2.1 添加用户组 groupadd

2.2 修改用户组 groupmod

2.3 删除用户组 groupdel

2.4 用户组切换 newgrp

2.5 相关文件


完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd、/etc/shadow、/etc/group等。

1.用户管理

1.1 添加用户 useradd

命令:useradd <参数> <用户名>

可选参数:

  • -c:comment,指定一段注释性描述。
  • -d:目录,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。如 useradd –d  /home/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录,无法递归创建)。
  • -g:用户组,指定用户所属的用户组。
  • -G:用户组,用户组 指定用户所属的附加组。
  • -s:Shell文件,指定用户的登录Shell。
  • -u:用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow、/etc/group等。

1.2 删除用户 userdel

命令:userdel <参数> <用户名>

可选参数:

  • -r:把用户的主目录一起删除。(如账号aaa的主目录:/home/aaa)

1.3 修改用户 usermod

命令:usermod <参数> <用户名>

可选参数:

  • 常用参数与添加用户参数相同
  • 有些系统可以使用选项:-l 新用户名,这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

1.4 用户密码管理 passwd

用户管理的一项重要内容是用户密码的管理。用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。

  • passwd:修改自己的密码;
  • passwd aaa:修改用户aaa的密码(仅超级用户可用)。

其他命令:passwd <参数> <用户名>

可选参数:

  • -l:锁定密码,即禁用账号。
  • -u:密码解锁。
  • -d:使账号无密码。
  • -f:强迫用户下次登录时修改密码。

1.5 相关文件

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。它的内容类似下面的例子:

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下:

  • <用户名>:<密码>:<用户标识号>:<用户组标识号>:<注释性描述>:<主目录>:<登录shell>

参数解析:

  • 用户标识号:是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  • 组标识号:该字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
  • 主目录:用户的起始工作目录。它是用户在登录到系统之后所处的目录。
    在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  • 登录shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
  • 伪用户:并非所有用户都是有效用户,有些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。(好像nologin都是)
  • 密码:虽然密码字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。只有超级用户才拥有/etc/shadow文件读权限,这就保证了用户密码的安全性。/etc/shadow 文件内容如下图所示:

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

  • <用户名>:<加密密码>:<最后一次修改时间>:<最小时间间隔>:<最大时间间隔>:<警告时间>:<不活动时间>:<失效时间>:<标志>

参数解析:

  • 用户名:是与/etc/passwd文件中的登录名相一致的用户账号。
  • 密码:存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  • 最后一次修改时间:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  • 最小时间间隔:指的是两次修改口令之间所需的最小天数。
  • 最大时间间隔:指的是口令保持有效的最大天数。
  • 警告时间:字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  • 不活动时间:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  • 失效时间:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

2.用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

2.1 添加用户组 groupadd

命令:groupadd <参数> <用户组名>

参数:

  • -g <GID>:指定新用户组的组标识号(GID)。
  • -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。(将用户添加到已有组)

2.2 修改用户组 groupmod

命令:groupmod <参数> <用户组名>

参数:

  • -g <GID>:为用户组指定新的组标识号。
  • -o:与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n <新用户组名>:将用户组的名字改为新名字。

2.3 删除用户组 groupdel

命令:groupdel <用户组名>

2.4 用户组切换 newgrp

命令:newgrp <用户组A>

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。

这条命令将当前用户切换到用户组A,前提条件是用户组A确实是该用户的主组或附加组。

2.5 相关文件

  • 每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
  • 当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
  • 用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
  • 用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

该文件中的每一行代表一个用户组,每行内容格式为:

  • <用户组名>:<用户组密码>:<用户组标识号>:<组内用户列表>

参数解析:

  • 组名:用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  • 密码:存放的是用户组加密后的密码。一般Linux 系统的用户组都没有密码,即这个字段一般为空,或者是*。
  • 组标识号:与用户标识号类似,也是一个整数,被系统内部用来标识组。
  • 组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值