Linux用户和用户组

Linux是多用户、多任务操作系统

一般来说,一个服务分配一个用户,这个用户只拥有这个服务相关文件的相关权限,如果用户不需要登陆,连密码都可以不分配,一般来说,非法分子都是获取当前进程的的权限来攻击服务器,而不是取得某个用户的用户名和密码。

一、/etc/passwd

vim /etc/passwd

Linux用户和用户组_第1张图片

man 5 /etc/passwd // 查看配置文件帮助

每一行对应一个用户,7个字段含义如下

1 用户名称

2 密码标志 // 早期密码在这里,后来改到/etc/shadow里,这里就只有一个标记了,x表示用户有密码

3 UID(用户ID)

0:超级用户,可以把普通用户的UID修改为0就成为了管理员,可以重叠

1-499:系统用户(伪用户),这些用户不能删除,

500-65535:普通用户

4 GID(用户初始组ID),建立用户是会同时建立一个初始组,一个用户只能属于一个初始组,但是可以挂在其他的附加组。

5 用户说明

6 家目录

7 登陆之后的Shell,命令解释器,标准的/bin/bash,还有/sbin/nologin伪用户

二、 /etc/shadow影子文件

vim /etc/shadow

Linux用户和用户组_第2张图片  

每个用户一行,shadow文件的权限为000

1 用户名

2 加密密码        

3 设置密码的时间,单位是天,1970年1月1日开始

4 两次修改密码的间隔,单位天,设置天数内不许修改

5 密码有效期

6 密码到期前几天开始警告

7 密码过期后的宽限天数,0:过期后立即失效,-1:密码永远不会失效

8 账号失效时间,要用时间戳表示

9 保留位

换算时间戳

三、 /etc/group // 组信息文件

Linux用户和用户组_第3张图片

没添加一个用户,就会生成一个和用户名一样的组,作为用户的初始组

1 组名

2 组密码标志,组密码并不常见

3 GID

4 组中附加用户

四、 /etc/gshadow // 组影子文件

1 组名

2 组密码,不推荐使用

3 组管理员用户名,如果设置了

4 组中附加用户

添加用户时如果不指定组,就会生成一个和用户名相同的组

5 用户管理相关文件

用户的家目录

普通用户:/home/用户名,自动建立,权限为700

超级用户:/root/,权限是550,权限形同虚设,

用户的邮箱

/var/spool/mail/用户名/

用户模板目录

新建用户的家目录里会从这里拷贝文件,/home/wang/

/etc/skel/

Linux下用户分为三种:

@ 超级用户

@ 普通用户

@ 虚拟用户/伪用户 // 不能登陆系统,满足系统进程对文件属主的要求。

组的出现是为了让权限可批量分配给用户

一个用户可以属于多个组,他将拥有多个组的权限集合

一个用户至少属于一个组

6 添加用户

adduser bob1 // 添加用户,没有指定组

产生的影响有:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/home/bob1 // 生成bob1家目录

/var/spool/mail/bob1 // 生成bob1邮箱目录

选项

-u UID // 手动指定用户UID,不建议手动设定

-d 家目录 // 不建议手动设定

-c 用户说明 //

-g 组名 // 初始组,不建议设定

-G // 附加组,用逗号分隔多个组

-s shell // 制定shell

useradd -u 666 -G root,bin -c "test user" -d /liming -s /bin/bash liming

添加用户默认值文件

/etc/default/useradd // 添加用户时默认的参数

GROUP=100 // 现在已经不是这样,直接新建了同名组

HOME=/home

INACTIVE // 密码过期宽限天数

EXPIRE= // 密码失效时间(8)

SHELL=/bin/bash // shell

SKEL=/etc/skel // 模板目录

CREATE_MAIL_SPOLL=yes // 是否建立邮箱

用户登陆配置默认配置

/etc/login.defs

PASS_MAX_DAYS 999999 // 密码有效期

...

7 设置密码

passwd bob1 // root给用户bob1设置/修改密码,不需要提供旧密码

passwd // 普通用户给自己修改密码,需要提供旧密码

passwd -S bob1 // root常看普通用户的密码状态

passwd -l bob1 // 管理员锁定普通用户,实际将shadow文件里的密文串修改了

passwd -u bob1 // 管理员解锁普通用户

echo "123" | passwd --stdin bob1 //设置密码为123

8 修改用户信息

usermod和useradd的选项一样,只是一个是添加用户一个是修改已存在的用户

usermod -c "test user" bob1 // 添加用户说明

usermod -G root bob1 // 加入到附加root组

usermod -L bob1 // 锁定用户的另一种方法

usermod -U bob1 // 解锁用户

9 修改用户密码状态

直接修改shadow文件更加直观

chage -l bob1 // 列出用户的详细密码状态

chage -d // 修改密码最后一次更改日期(shadow 第3字段)

chage -m // 两次密码修改间隔(4)

chage -M // 密码有效期(5)

chage -W // 密码过期前警告天数(6字段)

chage -I // 密码过期后宽限天数(7)

chage -E // 账号失效时间(8)

chage -d 0 bob1 // 将密码修改日期归0,这样用户一登陆就必须修改密码

10 删除用户

userdel -r bob1 // 删除用户的同时删除家目录,-r删家目录

手工删除用户

vi etc/passwd

vi etc/shadow

vi etc/group

vi etc/gshadow

rm -rf /var/spool/mail/bob1

rm -rf /home/bob1/

11 用户切换命令

su - root // 一定连同环境变量一起切换,杠没有就没有切换环境变量,会引发不可预测错误

env // 查看当前用户环境变量

su - bob1 // 超级用户切换普通用户,不需要输入密码

su - root -c "useradd user" // 不切换root,但是使用一次root身份来执行命令

id // 查看当前用户信息

whoami // 查看当前有效用户(su 切换的用户)

who am i // 查看当前实际用户(登陆用户)揭穿马甲

12 用户组管理

groupadd -g 500 // 手动指定GID,一般直接groupadd room401

groupmod -n room501 room401 // 修改组名401为501

groupmod -g 555 // 修改GID

groupdel room401 // 直接删,组没有家目录

一个组是一个用户的初始组,那么这个组是不可以被删除的,除非先删除用户

gpasswd -a user1 root // 将user1加入到root组,是附加组

gpasswd -d user1 root // 将user1从root组删除

groupadd -r mysql // 添加一个系统组,没有家目录,ID号小于500

13

chown -R bob1:mygroup /etc/test // 递归修改目录的所有者和所属组

chown -R bob1.mygroup /etc/test // 也可以用点

你可能感兴趣的:(Linux,前端,网络)