1.用户相关文件
1.1/etc/passwd 用户信息文件
![]()
第一列: 用户名
第二列: 密码位
第三列: 用户ID
- 0: 超级用户UID, 如果用户UID为0, 代表这个账号时管理员账号. 那么linux中如何把普通用户升级为管理员呢? 就是把其他用户的UID修改成0即可, 这点和Windows不同. 但是不建议建立多个管理员账号
- 1-499: 系统用户(伪用户)UID. 这些UID账号是系统用户的UID, 也就是说UID是1-499范围内的用户是不能登录系统的, 而是用来运行系统或服务的. 其中1-99是系统保留的账号, 系统自动创建. 100-499是与预留给用户创建系统账号的
- 500-60000: 普通用户UID. 建立的普通用户UID从500开始, 最大到60000. 这些用户足够使用了, 但是如果不够也不用害怕, 2.6.x内核以后的Linux系统用户UID已经支持2的32次方这么多了
第四列: 组ID, GID添加用户时, 如果不指定用户所属组的初始组, 那么会建立和用户名相同的组
第五列: 用户说明
第六列: 用户家目录
第七列: 登录shell /bin/bash
如何把普通用户变为超级用户: 把用户UID改为0
1.2/etc/shadow 影子文件

第一列: 用户名
第二列: 加密密码(我们可以在密码前人为的加入"!"或者"*"改变加密值让密码暂时失效, 使用这个用户无法登录, 达到暂时禁止用户登录的效果)(注意所有的伪用户的密码是"!!"或"*", 代表没有密码是不能登录的. 当然新建的用户如果不设定密码, 它的密码想也是"!!", 代表这个用户名没有密码, 不能登录
第三列: 密码最近更改的时间, 1970年1月1日作为标准时间
第四列: 两次密码修改的时间间隔
第五列: 密码的有效期
第六列: 密码修改到期前的警告天数
第七列: 密码过期后的宽限天数
第八列: 密码失效时间
第九列: 保留
1.3/etc/group 组信息文件

第一列: 组名
第二列: 组密码位
第三列: GID
第四列: 词组中支持的其他用户, 附加组是此组的用户
初始组: 每个用户初始组只有一个, 初始组只能有一个, 一般都是和用户名相同的组作为初始组
附加组: 每个用户属于多个附加组. 要把用户加入组, 都是加入附加组
1.4组密码文件 /etc/gshadow
如果我给用户组设定了组管理员, 并给该用户设定了组密码, 组密码就保存在这个文件当中. 组管理员就可以利用这个密码管理这个用户组了
1.5用户邮箱目录
这个邮箱在/var/spool/mail目录当中, 例如user1用户的邮箱就是/var/spool/mail/user1文件
2.用户管理命令
2.1添加用户
2.1.1手工删除用户
手工删除用户实验: 手工删除, 如果可以正常建立用户, 证明用户删除干净
/etc/passwd
/etc/shadow/etc/group
/etc/gshadow
/home/user1
/var/spool/mail/user1
这些目录中与此用户相关的内容需要删除干净才行
2.1.2useradd
useradd [选项] 用户名
选项:
-u 数字: 指定UID
-g 组名: 指定初始组, 不要手工指定, 需要事先创建初始组
-G 组名: 指定附加组, 把用户加入组, 使用附加组
-c 说明: 添加说明
-d 目录: 手工指定家目录, 目录不需要事先建立
-s shell: /bin/bash
2.1.3useradd默认值
useradd添加用户时参考的默认值文件主要有两个, 分别是/etc/default/useradd 和 /etc/login.defs
1)/etc/default/useradd

- GROUP=100
这个选项是建立用户的默认组, 也就是添加每个用户时, 用户的初始组就是GID为100的这个用户组. 目前我们采用的机制私有用户组机制 - HOME=/home
这是选项时用户的家目录的默认位置, 所以所有新建用户的家目录默认都在/home/下 - INACTIVE=-1
这个选项就是密码过期天数的宽限天数, 如果是0代表密码过期后立即失效; 如果是-1, 则代表所有新建的用户密码都会不失效 - EXPORE=
这个选项是密码的失效时间, 也是/etc/shadow文件的第八个字段. 也就是说用户到达这个日期后就会直接失效. 当然这里也是使用时间戳来表示日期的. 默认值是空, 索引所有新建用户没有失效时间, 永久有效 - SHELL=/bin/bash
这个选项是用户的默认shell的. /bin/bash是Linux的标志, 所以所有新建立的用户默认都具有shell赋予的权限 - SKEL=/etc/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
这行代表密码的最小长度, 默认不小于5位. 但是我们现在用户登录校验已经被PAM模块取代, 所以这个选项并不生效 - PASS_WARN_AGE 7
这行代表密码修改到期前的警告天数 - UID_MIN 500
- UID_MAX 60000
这两行代表创建用户时, 最小UID和最大的UID的范围 - GID_MIN 500
- GID_MAX 60000
这两行制定了GID的最小值和最大值之间的范围 - CREATE_HOME yes
这行指定创建用户时是否自动创建用户的家目录, 默认时创建用户的家目录 - UMASK 077
这行指定的时创建的用户家目录的默认权限, 因为umask的值是077, 所以创建的用户家目录的权限是700 - USERGROUPS_ENAB yes
这行指定的是使用命令userdel删除用户时, 是否删除用户的初始组, 默认是删除 - ENCRYPT_METHOD SHA512
这样指定Linux用户的密码使用SHA512散列模式加密, 这是新的密码加密模式, 原来的Linux只能用DES或MD5加密方式
2.2设定密码
passwd [选项] 用户名
选项:
-l: 暂时锁定用户. 仅root用户可用
-u: 解锁用户. 仅root用户可用
--stdin: 可以将通过管道符输出的数据作为用户的密码. 主要在批量添加用户时使用

2.3用户信息改正
usermod [选项] 用户名
选项:
-u UID: 修改用户UID
-d 家目录: 修改用户的家目录, 这里必须绝对路径
-c 用户说明: 修改用户说明信息, 就是/etc/passwd文件的第五个字段
-g 组名: 修改用户的初始组, 就是/etc/passwd文件的第四个字段
-G 组名: 修改文件文件的附加组, 就是把用户加入其他用户组
-s shell: 修改用户的登录shell. 默认是/bin/bash
-e 日期: 修改用户的失效日期, 格式为"YYYY-MM-DD", 也就是/etc/shadow文件的第八个字段
-L: 暂时锁定用户
-U: 解锁用户
-l 新名 旧名: 修改用户名
![]()
2.4删除用户
userdel [-r] 用户名
选项:
-r: 在删除用户的同时删除用户的家目录(注意一定要有-r, 否则家目录还要手动删除)
![]()
2.5切换用户身份
su命令可以切换不同的用户身份
su [选项] 用户名
选项:
-: 表示连带用户的环境变量一起切换
-c 命令: 仅执行一次命令, 而不切换用户身份

3.组管理命令
3.1添加用户组
groupadd [选项] 组名
选项:
-g GID: 指定组ID
![]()
3.2删除用户组: groupdel
groupdel 组名
![]()
注意: 要删除的组不能是其他用户的初始组, 如果组中有附加用户删除组时不受影响
3.4把用户添加进组或从组中删除: gpasswd
其实gpasswd命令时用来设定组密码并指定组管理员的, 不过组密码和组管理员功能很少使用. 而且完全被sudo命令却带, 所以gpasswd命令现在主要用于把用户添加到组中或从组中删除
gpasswd [选项] 组名
选项:
-a 用户名: 把用户加入组
-d 用户名: 把用户从组中删除

3.5改变有效组: newgrp
我们说过, 每个用户可以属于一个初始组(用户时这个组的初始用户), 也可以属于多个附加组. 既然用户可以属于这么多用户组, 那么用户创建文件后, 默认生效的组身份是哪一个呢? 当然是初始用户组的组身份生效了, 因为初始组是用户一旦登录就直接获得的组身份. 也就是说, 用户在创建文件后, 文件的属组是用户的初始组. 既然用户属于多个用户组, 那么能不能改变用户的有效组呢? 使用命令newgrp就可以切换用户的有效组了
newgrp 组名

本文详细解释了Linux系统中的用户相关文件(如/etc/passwd,/etc/shadow,/etc/group等)的功能,涉及用户ID、组ID、密码管理、用户和组的创建、修改、删除以及切换用户身份的方法。同时介绍了组管理命令如groupadd,groupdel和gpasswd的使用。
8863

被折叠的 条评论
为什么被折叠?



