首页 > 技术文章 > Linux用户和组管理

haojinfei 2020-10-27 16:41 原文

一、用户:
是用来操作系统中不同功能的身份

Linux系统中用户的分类
1)超级用户: root uid=0
2)系统用户:不需要登录系统,服务于应用程序,维护系统的运行
bin nobody uid: 1-999 rhel6: uid:1-499
3)普通用户:可以登录的用户 uid>=1000 rhel6: uid>=500
UID:用户标识

系统文件:
/etc/passwd:用户信息
/etc/shadow:用户密码相关的信息

/etc/login.defs 设置创建用户默认信息的
/etc/default/useradd 设置创建用户默认信息的
对用户的操作:新增、删除、修改、查看、设置密码


1、查看用户信息 id
# id root
uid=0(root) gid=0(root) groups=0(root)
# whoami //查看当前用户是谁
root
# id ff //查看指定用户的信息
uid=4(lp) gid=7(lp) groups=7(lp)
uid:用户标识
gid:组标识,用户的主组
groups:用户所属组信息
---------------------------------------------------------------------------
切换用户: su - 用户名
退出用户: exit

2、添加用户 useradd
注意:添加用户的操作只有root能操作
添加用户的同时默认会创建一个同名的组作为这个用户的初始组,并且为会这个用户创建一个邮箱,邮箱的位置在/var/spool/mail目录内
格式:useradd [选项 选项的参数 ...] 用户名
# useradd niulang
反例:
# su - niulang // switch user切换用户
$ useradd zhinv
-bash: /usr/sbin/useradd: Permission denied 权限被拒绝,普通用户是无法添加用户的
$ exit
logout
# id niulang
uid=1001(niulang) gid=1001(niulang) groups=1001(niulang)


添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组。
1)添加用户时指定选项 man useradd
-c:注释性的描述信息
-d:指定用户的家目录
默认情况下:
root的家目录是/root
普通用户的家目录是/home
-g:指定用户的主要组(基本组),前提:组是必须存在的
-G:指定用户的附加组(附属组),前提:组是必须存在的
-s:指定用户的登录shell
-u:指定用户的uid
-r : 创建系统帐户


# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:uid:gid:注释性描述:用户的家目录:用户的登录shell
-u -g -c -d -s


# echo $SHELL //查看当前shell,echo可以用来打印变量
/bin/bash
要求区分的两种shell
/bin/bash:可登录shell,如果用户的shell是这个,那么该用户可以登录到系统中
/sbin/nologin:非登录shell,如果用户的shell是这个,那么该用户是不允许登录到系统的


3、删除用户 userdel
# userdel wangmu //删除的时候不会删除用户的家目录和邮箱
# useradd wangmu //能添加,但是会有提示消息 删除时可加-r,或者删除残留邮箱信息
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
-r: 可以干净的删除一个用户包括邮箱信息
# userdel -r wangmu  
# cd /var/spool/mail/ 邮箱所在位置

4、给用户设置密码
passwd:
超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码
普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码
--stdin : 从标准输入获取密码,一般用在脚本中
-l : 锁定用户密码(只有根用户才能进行此操作)
-u : 解锁用户密码(只有根用户才能进行此操作)
-S:报告已命名帐号的密码状态(只有根用户才能进行此操作)

# echo 123 | passwd --stdin test2
更改用户 test2 的密码 。
passwd:所有的身份验证令牌已经成功更新。

/etc/shadow:存放用户密码信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm $3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用户名:加密后的密码:....
$6$:加密算法是sha512
$1$:加密算法是md5

5、修改用户 usermod
usermod: //modify:修改
-G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g:修改用户的主要组
-a:一般和-G联合使用,追加附属组
-u:修改用户的uid
-d:修改用户的家目录 -md
-m:将家目录内容移至新位置 (仅于 -d 一起使用) -md
-s:修改用户的shell
-L : 锁定用户帐号
-U : 解锁帐号
# useradd -G niulang,zhinv sha
# id sha
uid=1101(sha) gid=1101(sha) groups=1101(sha),1001(niulang),1002(zhinv)
# useradd sha2
# usermod -G sha2 sha
# id sha
uid=1101(sha) gid=1101(sha) groups=1101(sha),1102(sha2)
# usermod -a -G niulang sha
# id sha
uid=1101(sha) gid=1101(sha) groups=1101(sha),1001(niulang),1102(sha2)


二、组 group
用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。
用户只有一个主要组,可以同时属于多个组,除了主组以外的其他组称为附属组。

组的分类:从用户的角度分的,分为:
主组(基本组):primary group、initial group、first group,用户的默认组,也就是gid所标识的组
附属组(附加组):secondary group、supplementary group
1、添加组 groupadd
# groupadd g1
-g:添加组时,指定gid是多少
-r:添加系统组
# groupadd -g 1800 g2
# tail -2 /etc/group
g1:x:1005:
g2:x:1800:
组名:密码:gid:组里成员


2、修改组: groupmod
# groupmod -g 1888 g2
# grep g2 /etc/group
g2:x:1888:
修改组的名字 : -n 新名字
# groupmod -g 1588 -n group1 g1
# grep gr /etc/group
group1:x:1588:
3、删除组:groupdel
注意:不能够删除用户的主要组,能够删除用户的附属组
# groupdel group1

小实验:
# useradd t1
# useradd t2
# id t1
uid=1003(t1) gid=1003(t1) groups=1003(t1)
# id t2
uid=1004(t2) gid=1004(t2) groups=1004(t2)
# tail -2 /etc/group
t1:x:1003:
t2:x:1004:
# groupdel t1 //t1组是t1用户的主要组,不能删除
groupdel: cannot remove the primary group of user 't1'
# usermod -g t2 t1
# usermod -G t1 t2
# id t1
uid=1003(t1) gid=1004(t2) groups=1004(t2)
# id t2
uid=1004(t2) gid=1004(t2) groups=1004(t2),1003(t1)
# groupdel t1 //t1组仅仅是t2用户的附属组,可以被删除
# grep t1 /etc/group

4、组管理 gpasswd
管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码
给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。
1)指定组的管理员列表
# groupadd groups
# useradd u1
# gpasswd -A u1 groups //u1用户就是groups组的管理员了

2)向组中添加成员
# su - u1
$ gpasswd -a sha groups
Adding user sha to group groups
# tail /etc/group
groups:x:1005:sha

3)给组设置密码
# gpasswd groups
Changing the password for group groups
New Password:
Re-enter new password:

删除组密码
# gpasswd -r groups

4)切换组
# su - niulang
$ id
uid=1001(niulang) gid=1001(niulang) groups=1001(niulang)
$ newgrp groups //临时切换组
Password:
$ id
uid=1001(niulang) gid=1005(groups) groups=1001(niulang),1005(groups)

5)将用户从组中删除
# gpasswd -d sha groups
Removing user sha from group groups














推荐阅读