linux的用户和用户组
用户是必须的吗?
用户:标识计算机上的资源的归属
密码:对用户的身份做验证
登录的时候计算机如何做身份验证?
在计算机内部预先有一个数据库,在数据库中保存用户名和对应的密码,用户登录时候通过比对数据库来检查用户和密码是否正确
什么是数据库?
用来保存数据的文件,数据库管理软件(oracle mysql sqlserver db2)
/etc/passwd <<<< 保存系统中的全部的用户名
/etc/shadow <<<< 保存各个用户的密码
/etc/group <<<< 保存系统中的全部用户组名
/etc/gpasswd <<<< 保存各个用户组的密码
windows下新建用户
计算机-管理-本地用户和组-用户-新建 (用户名 密码)
计算机-管理-本地用户和组-组-新建(用户组)添加用户
windows下有用户和组,linux中同样有用户和,linux中一个用户也可以同属多个组,100个用户授权的话需要授权100次,直接把用户加到组中,直接授权组
用户:登录系统的用户名
用户组:多个用户的合集
用户组的作用
方便为多个用户批量授权
用户身份标识
计算机为每一个用户设置一个唯一的数字,当计算机识别用户的时候,通过
该数字来识别的,数字就是UID(User IDentifier)
用户组身份标识
GID
注意:为用户赋权的时候,其实是针对uid赋权的
例子:zs--uid=601
赋权:zs可以访问文件a.txt
本质:让uid为601的用户可以访问a.txt
/etc/passwd文件详解
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
文件的作用
这个文件中保存了系统中的全部用户,每行是一个用户
每个用户的信息包括7部分,如下
第一段:用户名
第二段:用户密码占位符,为了安全将密码放在另外一个文件中
(/etc/shadow)
第三段:用户的UID
第四段: 用户所在组的GID(该组是用户的基本组)
第五段:用户的描述信息(可以随便写)
第六段:用户的家目录
第七段:用户的shell类型
常见的shell类型
1:/bin/bash <<<< 默认是该shell的时候,可以登录系统
2:/sbin/nologin <<<该shell的用户是无法登录系统的
例子:统计有多少用户
[root@localhost ~]# cat /etc/passwd | wc -l
例子:统计当前系统中有多少用户可以登录系统
[root@localhost ~]# grep "/bin/bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhangsan:x:500:500::/home/zhangsan:/bin/bash
lisi:x:502:502::/home/lisi:/bin/bash
zs:x:503:503::/home/zs:/bin/bash
[root@localhost ~]# grep "/bin/bash$" /etc/passwd |wc -l
4
管理员
UID 0
特点:默认只有一个,就是root root不受任何权限的约束
系统用户
UID 1-499
特点:在安装完成linux之后或者安装了某个程序执行自动生成
的用户,这类用户是默认情况不能登录系统的,这类用户存在的
目的是为了运行特定的服务(程序、进程)
默认系统用户也没有家目录
普通用户
UID 500+
特点:需要运行命令 useradd来创建
普通用户的权限非常小,通常仅仅能在自己的家目录下进行操作
该类用户的家目录/home下和用户同名的目录
用户的基本组(用户的主组)
在/etc/passwd中第四个字段(GID)所指向的组就是用户的基本组
用户的附件组
注意:一个用户可以属于多个组。同一时间,只能有一个是主组,其他的就是附加组,除了主组之外的其他组就是该用户的附加组
补充:在用useradd创建普通用户的时候,默认情况下,会创建一个组,组名和用户名
相同,该组默认就是该用户的基本组(主组)
useradd bajie
tail /etc/passwd
cat /etc/group
补充:linux的文件属性
属主:文件的属主(谁创建的文件,文件的属主就是谁)
属组:设置文件对于一个特定用户组所具有的权限,这个组就是该文件的属组
注意:属组、属主默认都只有一个
如果一个用户既不是属主,也不是属组的组内用户,那么该用户就是"其他用户"
三类用户
属主
属组的组内用户
其他用户
创建用户
useradd命令
作用:新建用户
格式:useradd [options]用户名
选项:
-c "string" 设置新用户的描述信息
-d "/path/to/dir" 设置用户的家目录
-e 月月/日日/年年:指定账号的过期日期
-g GID:指定用户的主组ID号或名称
-G GID,GID,GID:指定用户的附加组的ID号或名称
-m 在创建用户的时候,如果用户家目录不存在,则自动创建(该选项
自动使用)
-M 不自动创建用户家目录
-r 创建系统用户
用此选项创建的用户有以下特点
1、默认用户无家目录
2、默认用户uid<500
3、默认用户的shell是bash
4、用户可以登录系统
-s shType:指定用户的shell类型
常用的shell
/bin/bash
/sbin/nologin
-u UID 指定用户的uid
-u UID -o 指定让新用户使用一个现有的ID
[root@localhost ~]# useradd -c "i am tom" tom
[root@localhost ~]# tail /etc/passwd
tom:x:505:505:i am tom:/home/tom:/bin/bash
useradd zhangsan 创建用户zhangsan
tail /etc/passwd 查看用户是否存在
id 用户名 可以查看用户是否存在
例子:新建用户jerry,要求主组为gp01,附加组为gp02 和gp03
[root@localhost ~]# useradd -g gp01 -G gp02,gp03 jerry
[root@localhost ~]# tail /etc/passwd
[root@localhost ~]# tail /etc/group
例子:创建一个用户kity,要求将其创建为系统用户(无家目录,uid<500,不能登录系统)
useradd -r -s /sbin/nologin kity
例子:新建用户2222并指定UID为600
useradd -u 600 2222
tail /etc/passwd
lll:x:507:509::/home/lll:/bin/bash
2222:x:600:600::/home/2222:/bin/bash
例子:新建用户dog,要求其uid为660,主组为gp02,附加组为gp01,gp03,家目录在/tmp/dog,指定shell类型为bin/bash
useradd -u 660 -g gp02 -G gp01,gp03 -d /tmp/dog -s /bin/bash dog
groupadd命令
作用:新建用户组
格式:groupadd [选项]组名
选项:-g:指定用户组的组id
[root@localhost ~]# groupadd gp01
[root@localhost ~]# groupadd gp02
[root@localhost ~]# groupadd gp03
[root@localhost ~]# tail /etc/group
gp01:x:506:
gp02:x:507:
gp03:x:508:
id命令
作用:显示指定用户的id信息
格式:id[选项]用户名
选项:
-u:显示用户的UID
-g:显示用户的主组的ID
-G:显示用户的全部租的ID列表
id -g hhhhh
useradd
[root@localhost ~]# useradd -u 670 -g gp01 -Ggp02,gp03 hhhhh
[root@localhost ~]# id hhhhh
uid=670(hhhhh) gid=506(gp01) groups=506(gp01),507(gp02),508(gp03)
[root@localhost ~]# id -G hhhhh
506 507 508
[root@localhost ~]# id -g hhhhh
506
[root@localhost ~]# id -u hhhhh
670
passwd命令
作用:修改用户的密码(给用户设置密码)
格式:passwd[选项]用户名
注意:
1:passwd 用户 修改指定用户的密码
2:passwd 修改当前用户的密码
3:默认情况只有root用户,才能修改其他用户的密码,普通用户只能修改自己的密码
选项:
-l:锁定用户(只有root才能进行锁定操作)
-u:解锁用户
--stdin:从表示输出来读取内容,为用户设置密码(shell脚本中使用)
影子文件 /etc/shadow
作用:保存密码
root:$6$HhL6V5BM$f29xu.FUgGnQqNtmqLGAyOy/fLMlF/JepDTfgoaqvC4.b7wiVmMc7i3HRDMVNdYQACOK9d3.wsgbZi1hPAEoj/:17997:0:99999:7:::
第一个字段:login name :系统中存在的用户名
第二个字段:encrypted password :这里存放的是加密后的密码(单向加密)
1:如果密码段中出现!或*,那么就不能用此密码登录系统
2:如果密码段为空,则表示空密码,但是系统往往禁止使用空密码登录
3:如果密码开头是*,表示密码被锁定了
第三个字段:date of last password change:密码上次修改的日期,这里所写的是举例
1970-1-1所经过的天数。
(1)如果该字段为0,会要求用户在下次登录的时候修改密码
(2)该文件不能为空
第四个字段:minimum password age ,两次修改密码的最短时间
1、为空或者为0,表示没有最短时间限制
第五个字段:maximum password age:密码的最长有效期
1、如果字段为空或者99999,表示不限制最长有效期
2、如果最长时间小于最短时间,则禁止该用户修改密码
第六个字段:password warning period
指定在密码到期前N天发送报警信息
1、如果为0,表示不会自动发送报警信息
2、在此期间内,用户可以正常登陆系统
第七个字段:password inactivity period:密码的非活动时间
1、在此期间登陆系统的时候,必须先修改密码才能登陆系统。
2、如果在此阶段仍然没有修改密码,那么就真的登陆不上了(找管理员处理)
第八个字段:account expiration date:用户的过期日期
1、表示方式也是用距离1970.1.1所经过的天数
2、该字段为空,表示该字段永不过期
3、0表示用户被禁用
第九个字段:reserved field :尚未使用
注意:
密码过期:修改密码可以继续使用
账户过期:账户再也不能登录系统
/etc/passwd <<<用户基本信息 ,useradd新建用户,用户的信息保存在这里
/etc/group <<<用户组信息,groupadd新建用户组,用户组的信息保存在这里。
/etc/shadow <<<用户的密码文件,passwd的时候,其实就是修改这个文件中的内容
userdel命令
作用:删除用户
格式: userdel [options] 用户名
选项:
-r :在删除用户的同时,删除用户的家目录
chsh命令
作用:修改用户的shell类型
格式:chsh[-s type]username
(本质上就是修改/etc/passwd中的内容)
chfn命令
作用:修改用户的注释信息
usermod命令
作用:修改用户的基本信息(/etc/passwd)
格式:usermod [options]username
选项:
-g GID:修改基本组
-G GID: 修改附加组
-u UID:修改uid值
-C string:修改用户的描述
-d /path/dir:修改用户的家目录
-s SHELL:修改用户的shell类型
-l newName:修改用户的名称
-L 锁定用户
-U 解锁用户
su命令
作用:切换用户
格式:[options]用户
选项
-[l]:切换用户,并且继承用户的环境变量
-c 命令:在不切换用户情况下,以指定用户的身份来执行命令
注意:
su切换用户后返回,需要执行命令exit
例子:以root身份执行mkdir命令
$ su - -c "mkdir /abc1" root
生产环境的注意事项:
在生产环境中,如果员工离职,通常是禁用用户,在短时间内是不会删除用户的,更不会删除用户的家目录以及家目录中的文件。
禁用用户
修改shell类型/sbin/nologin
在密码前加上!
设置账户的过期时间为0(密码文件的第八段)
权限
r:读 可以执行cat、head、more、less等命令读取文件中的内容,也可以用vi打开并读取文件中的内容
w:写 可以用vi或者重定向等操作文件中写入内容或者修改其中的内容
x:执行 可以执行文件(把程序转换成进程)
目录的权限
r:可以执行ls命令来查看目录下的文件有哪些
w:可以在目录下执行文件的创建和删除等操作
x:可以执行cd命令
用户的角色有三类
属主用户(u)user
属组用户(g)group
其他用户(o)other
全部用户(a)all
-:一般文件
d:目录
l:链接文件
s:套接字文件
第二到第四位:表示文件的属主所具有的权限
第五到第七位:表示文件的属组的组内用户所具有的权限
第八到第十位,表示系统中的其他用户所具有的权限
注意:
1、每一类用户的权限的顺序都是:读权限、写权限、执行权限
2、如果用户有对应的权限,就出现字符,如果没有对应的权限就用-表示。
例子:[root@localhost tmp]# ls -l 1.txt
-rw-r--r-- 1 root bin 149 Apr 16 18:22 1.txt
文件的属主权限:可读可写
文件的属组用户权限:只读权限
其他用户的权限:只读权限
chown命令
作用:修改文件的属主
格式:chown userName [-R]fileNAme
选项: -R 在修改目录的时候,将目录和目录中的文件都一并修改
例子:将文件a.txt的属主改为zhangsan
chown zhangsan a.txt
例子:将目录yunwei和yunwei中的文件的属主都修改为zhangsan
chown -R zhangsan yunwei
chgrp命令
作用:修改文件的属组
例子:将文件a.txt的属组改为tom
chgrp tom a.txt
例子:将文件a.txt的属主改为zhangsan ,属组改为tom
chown zhangsan.tom a.txt
或者
chown zhangsan:tom a.txt
注意:
修改属主或者属组的时候,那个用户名和组名是存在的,否则报错。
chmod命令
作用:修改文件的权限
格式:chmod 权限 -R fileName
选项:-R
方式:
+:增价某项权限
-:去除权限
=:将权限修改为指定的类型(和原来的权限无关)
例子:修改文件a.txt的权限
去除属主的写权限
将属组的权限设置为读和写
给其他用户添加写权限
chmod u-w,g=rw,0+w a.txt
例子:给全部用户都添加上执行权限
chmod ugo+x a.txt
或者
chmod a+x a.txt
或者
chmod +x a.txt
例子:去除其他用户的全部权限
chmod o= a.txt
chmod o-rwx a.txt
基于数字表示文件的权限
r:4
w:2
x:1
--- 000 0
--x 001 1
-w- 010 2
-rx 011 3
r-- 100 4
r-w 101 5
rw- 110 6
rwx 111 7
例子:将文件a.txt的属主改为可读可写,属组改为可读,其他用户没有任何权限
#chmod 640 a.txt
创建用户的原理
和用户相关的文件
1、/etc/passwd
2、/etc/shadow
3、/etc/group
4、/etc/skel <<<<用户家目录的模版
5、/etc/login.defs <<<<控制新建用户的默认属性
6、/etc/defaults/useradd <<<<控制新建用户的默认属性
7、/var/spool/mail/用户名
1、将/etc/skel目录复制home下,改名为和用户名相同
2、将该目录的属主和属组改为用户名
3、将该目录的权限设改为700
假设新建一个用户laosun
#cp r /etc/skel /home/laosun
#chown -R laosun.laosun /home/laosun
#chmod -R 700 /home/laosun
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最小值
UID_MAX 60000
新建普通用户的默认UID最大值
GID_MIN 500
新建普通用户的默认GID最小值
GID_MAX 60000
新建普通用户的默认GID最大值
CREATE_HOME yes
是否默认创建用户家目录
UMASK 077
反向掩码值(用来控制新建文件和目录的默认权限值)
USERGROUPS_ENAB yes
当用户组中没有用户了,是否删除用户组
ENCRYPT_METHOD SHA512
指定加密算法
SHA512
MD5
加密后的密码由三部分构成
$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB
$加密算法$随机字符串$加密后的数据
说明:
加密算法:
1、表示MD5加密
6、SHA512加密
vim /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home <<<<<默认普通用户的家目录的位置
INACTIVE=-1 <<<<<设置新用户账号是否过期。-1表示不启用
EXPIRE= <<<<<设置新建账户的过期日期,空白表示不启用
SHELL=/bin/bash <<<<<设置新建用户的默认shell类型
SKEL=/etc/skel <<<<<指定新建用户的家目录模版目录
CREATE_MAIL_SPOOL=yes <<<<<设置是否给新建的用户创建用户邮件
新建用户
useradd
passwd
完成的操作
1、/etc/passwd 添加一行
2、/etc/shadow 添加一行
3、/etc/group 添加一行
4、创建用户家目录
5、创建用户邮件文件
例子:创建用户timi,要求uid 777,主组hadoop (800)
附加组 python (850) hbase(860) 家目录 /home/timi
描述 i am timi
密码设置为123 最少使用3天才能修改,最长使用30天,到期
前5天发送报警,非活动时间2天。
实现步骤:
1、创建用户基本信息(/etc/passwd)
vim /etc/passwd
timi:x:777:800:i am timi:/home/timi:/bin/bash
2、检查用户
id timi
3、使用openssl来生成密码
格式:openssl -1 --salt "string"
说明:
-1 表示md5加密算法
--salt表示在加密的时候掺入杂志(提升安全性)
[root@localhost ~]# openssl passwd -1 -salt "abc123"
Password:
$1$abc123$uE7.dLhrmG/qKHqAIlwPi.
4、修改密码文件
timi:$1$abc123$uE7.dLhrmG/qKHqAIlwPi.:18005:3:30:5:2::
5、创建用户组
vim /etc/group
hadoop:x:800:
python:x:850:timi
habse:x:860:timi
6、创建用户家目录
# cp -r /etc/skel /home/timi
# cd /home/
# chown -R timi.hadoop /home/timi/
# chmod -R --reference=*** timi ***已经存在于/home中
(把timi的权限参照改为***的权限)
7、创建用户邮件
cd /var/spool/mail/
ls
touch timi
chmod 660 timi
chown timi.mail timi
8、测试用户是否可以正常使用
补充:
#useradd guizi
useradd 警告:此主目录已经存在。
不从sekl目录里向其中复制任何文件。 <<<<<1
正在创建信箱文件,文件已存在 <<<<<2
新建用户出现这个错误信息,就表示
1、表示用户的家目录已经存在
2、表示用户的邮件文件已经存在
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。