Linux系统管理10:用户和组

管理用户和组是linux管理中最基本的操作,要登录linux,就必须拥有相应的用户名和密码。

一、用户相关文件

1、/etc/passwd (用户信息文件)

查看命令cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

​ 第一列:用户名称。用户登录系统的账号。用户名称不能同名,且区分大小写。
很多系统上,该字段被限制在8个字符(字母或数字)之内。

​ 第二列:用户密码。登录系统的口令。现在linux系统中的口令不再直接保存在passwd文件中,通常将passwd文件的口令字段使用一个x来代替,而将口令保存在/etc/shadow文件中。若该字段的第一个字符是星号*,表示禁止该账号登录。

​ 第三列:用户id。user id简称UID。是一个数值,用于唯一标识linux系统中的用户,用来区别不同的用户。linux系统中有65535个用户名,用户名和UID都可以用来标识用户。相同UID的用户可以认为是同一用户,同时它们具有相同的权限。

  • 0 超级用户UID。如果用户UID为0,代表这个账号是管理员帐号。那Linux中如何把普通用户升级成为管理员呢?就是把其他用户的UID修改为0就可以了,这点和Win是不同的。不过不建议,立多个管理员账号。

  • 1-499 系统用户(伪用户)UID。这些UID账号是系统留给系统用户的UID,也就是说UID是1-499范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中1-99是系统保留的账号,系统自动创建的。100-499是预留给用户创建系统账号的。正常运行系统时使用的账号。每个进程运行在系统中都有一个相应的属主,比如某个进程以何种身份运行,这些身份就是系统里对应的用户账号。系统账号是不能用来登录的,如bin、daemon、mail等

  • 500-65535 普通用户UID。建立的普通用户UID从500开始,最大到65535.这些用户足够使用了,但是如果不够也不用害怕,2.6.x内核以后的linux系统用户UID已经支持2^32次的个数了。

    第四列:组ID 。group id简称GID。当前用户所属的默认用户组标识。当添加用户时,系统默认会建立一个和用户名一样的用户组,多个用户可以属于相同的用户组。用户可以同时属于多个组,每个组也可以包含多个用户。

    第五列:用户说明。存放系统用户的一些信息,如用户的真实姓名等

    第六列:用户家目录。定义了用户的主目录,当用户登录后,将把该目录作为用户的工作目录。

    第七列:登录shell。shell是当前用户登录系统时运行的程序,通常是/bin/bash。同时系统中可能存在其他的shell。注:通常系统管理员不需要直接修改passwd文件,而是使用linux提供的账号管理命令来管理和维护用户账号。

2、/etc/shadow(影子文件)

查看命令(在root用户下):cat /etc/shadow

root:$6$Igoe/VZqBiCokDx/$dRYDckKpTxveULnMdR5hGtNm8q0FWGtMCfcWQkR2076/0CUJ0gSSscl0ucYzR6EGQYzIj8aPP1rEP8aeVhSEB0:18327:0:99999:7:::

​ 超级用户才能读取。与passwd类似,shadow文件有9个字段(域)组成。

  • 用户登录名。
  • 用户加密后的口令(若为空,则不需口令即可登录,若为*号,该账号被禁用)。
  • 从1970年1月1日至口令最近一次被修改的天数。
  • 口令在多少天内不能被用户修改。
  • 口令在多少天以后必须被修改(0为没有修改过)。
  • 口令过期多少天后用户账号被禁止。
  • 口令到期多少天内给用户发出警告。
  • 口令失效时间,口令自1970年1月1日被禁止的天数。
  • 保留域。

3、/etc/group(组信息文件)

具有某种共同用户集合起来就是用户组。用于保存用户组的所有信息。

查看命令cat /etc/group

root:x:0:

第一列:用户组名称,组名不可重复。

第二列:组密码

第三列:用户组标识号group id(GID),用户唯一标识一个组。

第四列:组内用户列表,每个用户之间用逗号隔开

初始组:每个用户初始组只能有一个,一般都是和用户名相同的组作为初始组。

附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组。

4、/etc/gshadow(组密码文件)

如果我给用户组设定了组管理员,并给该用户组设定了组密码,组密码就保存在这个文件当中。组管理员就可以利用这个密码管理这个用户组了。

5、用户家目录

6、用户邮箱目录

这个邮箱在/var/spool/mail目录当中,例如lamp用户的邮箱就是/var/spool/mail/lamp文件

7、用户模板目录

/etc/skel。当创建新用户后,在该目录下的文件就会复制到用户家目录下。

二、用户管理命令

系统管理员对用户和组的管理主要包括添加用户(组)、删除用户(组)、修改用户(组)的资料等操作。
添加、删除用户和组的操作可以直接由系统管理员编辑passwd和group文件来进行。但直接编辑这两个文件容易出错,一般不建议这样操作,最好用linux提供的相应命令来完成操作。

1.添加用户

1.1 手工删除用户

手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。

/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/home/user1,/var/speel/mail/user1

1.2 useradd命令

useradd 选项 用户名

选项

  • -u 550 指定uid
  • -g 组名 指定初始值,不要手工指定
  • -G 组名 指定附加组,把用户加入组,使用附加组
  • -c 说明 添加说明
  • -d 目录 手工指定家目录,目录不需要事先建立
  • -s shell /bin/bash.

一般直接使用useradd 用户名

1.3 useradd默认值

useradd添加用户是参考的默认值文件主要有两个,分别是/etc/default/usradd和/etc/login.defs

1)/etc/default/usradd

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
  • GROUP=100:这个是建立用户的默认组,也就是说,添加每个用户时,用户的初始值就是GID为100的这个用户组。目前我们采用的机制私有用户组机制。
  • HOME=/home:这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录都默认在/home/下
  • INACTIVE=-1:这个是密码过期后得到宽限天数,也就是/etc/shadow文件的第七个字段。如果是天数, 比如10代表密码过期10天后失效;如果是0,代表密码过期后立即失效;如果是-1,则代表密码永不过期。(推荐把这里的-1改成0)
  • EXPIRE=:这个选项是密码失效的时间,也就是/etc/shadow文件的第八个字段。也就是说用户到达这个日期后就会直接失效。当然这也是使用时间戳来表示日期的。默认值时空,所以所有新建用户没有失效时间,永久有效。
  • SHELL=/bin/bash:这个选项是用户的默认shell的。/bin/bash是linux的表示shell,所以所有新建立的用户默认都具备shell赋予的权限
  • SKEL=/etc/skel:模板文件
  • CREATE_MAIL_SPOOL=yes:是否创建邮箱

2)/etc/login.defs

# 这个文件的注释这边已经删除,就保留有用部分
MAIL_DIR	/var/spool/mail

PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7

UID_MIN			  500
UID_MAX			60000

GID_MIN			  500
GID_MAX			60000

CREATE_HOME	yes

UMASK           077

USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512 
  • MAIL_DIR:邮箱保存位置
  • PASS_MAX_DAYS:密码有效期
  • PASS_MIN_DAYS:指定两次密码的修改时间间隔
  • PASS_MIN_LEN:密码的最小长度
  • PASS_WARN_AGE:密码修改到期前的警告天数
  • UID_MIN:这两行指定UID的最大值和最小值
  • GID_MAX:这两行指定GID的最大值和最小值
  • CREATE_HOME:指定建立用户时是否自动创建用户的家目录
  • UMASK:指定建立的家目录的默认权限,因为umask值是077,所以新建的家目录的权限是700
  • USERGROUPS_ENAB:指定使用userdel删除用户时,是否删除用户的初始组,默认删除
  • ENCRYPT_METHOD:指定密码使用SHA512散列模式加密

2.添加密码

命令passwd [选项] 用户名

选项

  • -l:暂时锁定用户。仅root用户可用
  • -u:解锁用户。仅root用户可用
  • –stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用

也可以使用字符串作为密码:

echo "123" | passwd --stdin lamp

可以通过命令,把密码修改日期归零。这样用户一登录就要修改密码

change -d 0 lamp

3.用户信息修改

usermod命令是修改用户信息的命令

命令usermod [选项] 用户名

选项

-d 修改用户登录的主目录
-e 修改账号的有效期限
-f 修改在密码过期后多少天关闭该账号
-g 修改用户所属的组
-G 修改用户所属的附加群组
-l 修改用户账号名称
-L 锁定用户密码,使密码无效
-s 修改用户登录后使用的shell
-u 修改用户id
-U 解除密码锁定

4.删除用户

命令userdel [-r] 用户名

选项

-r:在删除用户的同时删除用户的家目录

5.切换用户身份

命令su [选项] 用户名

选项

-:选项只能“-”代表连带用户的环境变量一起切换

-c 命令:仅执行一次命令,而不切换用户身份

:“-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。

三、组管理命令

1.添加用户组:groupadd

命令groupadd [选项] 组名

选项

-g :GID 指定组id

2.删除用户组:groupdel

命令groupdel 组名

如果该组是一个用户的初始组,则该组删不了。

四、把用户添加进组或从组中删除:gpasswd

​ 其实gpasswd命令是用来设定组密码并指定组管理员的, 不过我们在前面已经说了,组密码和组管理员功能很少使用,而且完全可以被sudo命令取代,所以gpasswd命令现在主要用于把用户添加进组或从组中删除。

命令gpasswd [选项] 组名

选项

-a 用户名:把用户加入组

-d 用户名:把用户从组删除

需要注意的是:也可以使用usermod命令把用户加入某个组,不过usermod命令的操作对象是用户,命令是usermod -G grouptest lamp,把用户名作为参数放在最后;而gpasswd命令操作对象是组,命令是gpasswd -a lamp grouptest,把组名作为参数放在最后。

五、改变有效组:newgrp

我们说过,每个用户可以属于一个初始组(用户是这个组的初始成员),也可以属于多个附加组(用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效的组身份是哪个呢?当然是初始用户组的组身份生效。因为初始组是用户一旦登陆就直接获得的组身份。那么如何修改有效组呢?

命令格式newgrp 组名

猜你喜欢

转载自blog.csdn.net/jiangSummer/article/details/105469666