Linux用户和用户组

1. 用户与组的关系

用户与用户组的对应关系有:一对一,一对多,多对一

一对一:即一个用户可以存在一个组中,也可以是组中唯一成员。

一对多:即一个用户可以存在多个用户组中,那么此用户具有多个组的共同权限。

多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。

2. User,Group及Others

根据用户与用户组的关系,可以将权限分为三种:

所有者权限(User)        属组权限(Group)        其他人权限(Others)

-rw--r--r-- 1 root root 19 Jan 4 16:00 aaa
r: 读
w: 写
x: 执行
这里:
root用户 具备rw即读和写的权限
root用户组 具备r读的权限
其他人 具备r读的权限

3. Linux的用户管理

创建一个用户的时候,默认情况下,会为其创建一个同名的用户组。

# 查看用户信息的文件:passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bob:x:1001:1001::/home/bob:/bin/bash
bob    用户名字
x    用户密码
1001    用户ID
1001    主组ID
::    创建用户时可以指定描述
/home/bob    用户的主目录
:/bin/bash    shell程序
# /etc/passwd文件是对所有用户都可读的,因此使用shadow技术,把真正加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如x或者*
# 对于CentOS7来说,1000以内的是系统用户,如果是普通用户,用户ID是从1000开始的
# shell程序:是用户和linux内核交互的一个桥梁。默认是/bin/bash

(1) 创建用户

1. 语法:useradd [选项] {UserName}
选项:
-c    指定一段注释性描述
-d    目录    指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录
-g    用户组    指定用户所属的主用户组
-G    用户组,用户组    指定用户所属的附加组
-s    Shell程序    指定用户的登录Shell,有一个特殊的shell程序叫nologin,如果某账户使用此shell,就表示用户不允许登录,该用户通常为伪用户。
-u    用户ID    指定用户的用户号
uid唯一,不重复

例:
# 添加用户tom
useradd tom

# 添加用户jerry,并指定主目录为/yae/jerry,主组为root,附加组为tom和adm
useradd -d /yae/jerry -g root -G tom,adm jerry

# 添加用户test1,指定shell程序为/bin/sh,用户id为80000
useradd -s /bin/sh -u 80000 test1

# 添加用户test2,指定shell程序为/sbin/nologin
useradd -s /sbin/nologin test2

2. 查看用户id
id test1
uid=1004(test1) gid=1004(test1) groups=1004(test1)
# 用户id1004,主组id1004,用户所有组

3. 保存用户组的信息
/etc/group

4. 保存shell程序
cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
# /bin/bash相当于/bin/sh的升级版

例:创建用户test5,指定shell程序为/bin/sh
useradd -s /bin/sh test5
切换到test5
su test5
/bin/sh的命令提示符:sh-4.2$

例:创建用户test6,指定shell程序为/sbin/nologin,代表用户是伪用户
useradd -s /sbin/nologin test6

useradd -d /bigdata/jerry -g root -G test1,zhangsan -u 200000 jerry

(2) 修改用户

语法:usermod [选项] {UserName}    
选项同上

例:
1. 修改test1的uid为9000
usermod -u 9000 test1
2. 修改jerry的附加组为test和test1
usermod -G test,test1 jerry

3. 给jerry追加附加组
usermod -aG root,adm jerry

4. 修改test2的shell程序为/bin/bash
usermod -s /bin/bash test2

(3) 删除用户

语法:userdel [选项] {UserName}
选项:
-r    删除用户的同时删除用户的主目录

(4) 密码管理

passwd可以不跟选项、用户名,默认是修改自己的账号密码。普通用户只能修改自己的密码。普通用户修改密码时,必须满足密码安全策略。

修改他人密码,必须是root用户。管理员root用户修改他人密码时,不需要满足密码安全策略。

语法:passwd [选项] {UserName}
选项:
-l    锁定账户
-u    解锁账户
-d    删除密码

# 保存密码的文件(只有root用户可以查看)
/etc/shadow
用户名:经过加密的用户密码:从1970年1月1日到创建一共多少天:可以设置两次设置密码的间隔:密码的有效期:提示到期前七天需要修改密码

例:锁定账户(退出后切换至普通用户后不能切换锁定的账户,但从root用户切换锁定账户是可以切换成功的)
passwd -l tom

解锁账户(可以正常切换)
passwd -u tom

删除用户密码
passwd -d tom

 锁定用户和删除用户密码都是可以达到不允许账户远程登录的效果。

(5) 用户身份切换 su

su {UserName}        表示切换用户后,依然停留在当前目录,不切换环境变量
su - {UserName}      表示切换用户后,去到该用户的主目录,并切换环境变量
例:比如当前是root用户,在home目录下,首先输出环境变量(变量通过$符号进行引用)
echo $PATH
当前是root的环境变量,然后切换到tom
su tom
也在home目录,且还是root的环境变量

su - tom
在用户的主目录下,且环境变量变成了tom的环境变量,此时tom用户会自动识别主目录下的bin目录的执行脚本

(6) 用户组常用命令

1. 用户组信息的查询
cat /etc/group
组的名字:组的密码:组的id:把改组看成附加组才会显示(即组内用户列表)

2. 添加、删除用户组
# 添加用户组
groupadd group1
groupadd group2
groupadd -g 1000 group3
# 修改用户组的主组
groupmod -g 3000 group3
# 查看用户组文件,能看到这三个组
cat /etc/group
# 删除用户组 
groupdel group1
# 注:删除用户组时,用户组必须存在,如果有组中任意用户在使用中的话,则不能删除。
# 查看用户组文件,只能看到group2和group3
cat /etc/group

注:如果该用户组被追加了主组,是不可以删的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值