linux用户+属组(1)

用户的类别

① root超级管理员,在Linux系统中拥有无上的权力

② 系统用户,CentOS6=> 1 ~ 499,CentOS7=> 1 ~ 999,系统账号默认不允许登录

用户管理

① 用户添加 useradd

② 用户修改 usermod

③ 用户删除 userdel


```powershell
# useradd [选项 选项的值] 新用户名称
-u	指定用户uid,唯一标识,必须唯一
-g	指定用户的默认组(主组)
-G	指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d	指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s	指定用户默认shell,常见/bin/bash或/sbin/nologin

扩展:
-r  指定用户为系统用户,如创建一个系统账号mysql

用户创建完成判断是否成功:查看/etc/passwd文件
创建用户,但是不容许登陆:useradd -s /sbin/nologin mysql


## 与用户相关的文件

Linux中一切皆文件,所以保存用户的信息的也是一个文件 => /etc/passwd

root❌0:0:root:/root:/bin/bash

第1列:用户名称
第2列:用户密码,使用一个x占位符,真实密码存储在/etc/shadow文件中
第3列:用户的编号UID,0,1-999,1000 ~ 60000
第4列:用户的主组编号GID
第5列:用户的备注信息(扩展,可以使用-c进行指定) useradd -c “mysql” mysql
第6列:用户的家目录,/root,超级管理员的家/home,普通账号的家
第7列:用户的Shell文件,常见/bin/bash或/sbin/nologin=>/bin/false


## usermod用户修改
 usermod [选项 选项的值] 用户名称
-u	指定用户uid,唯一标识,必须唯一	
-g	指定用户的默认组(主组)
-G	指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d	指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s	指定用户默认shell

修改zhangsan账号的主组为oracle组
① 可以获取oracle组的编号信息GID
② 使用usermod -g GID编号修改某个用户的主组信息
[root@19c ~]# cat /etc/group |grep oracle
dba❌54322:oracle
oper❌54323:oracle
[root@19c ~]# usermod -g 54323 zhangsan
用命令加入oracle组
usermod -g oracle zhangsan
usermod -G 54321 lisi

创建一个itcast组,在创建一个wangwu的账号,修改wangwu的附加组为itcast与oinstall

# groupadd itcast
# useradd wangwu
# usermod -G itcast,itheima oinstall

修改家目录

修改用户zhangsan的家目录为/rhome/zhangsan

```powershell
# mkdir /rhome/zhangsan
# usermod -d /rhome/zhangsan zhangsan
# su - zhangsan
-bash-4.2$
出现以上问题的主要原因在于:我们迁移用户的家目录时,没有迁移家目录中的配置文件

解决方案:
① 家目录已经迁移,我们把/etc/skel中的文件,copy到新家中
# cp -a /etc/skel/. /rhome/zhangsan/
选项说明:
-a :all所有,复制时,保留文件的原有属性
② 家目录还没有迁移,准备迁移时,使用usermod -md /rhome/zhangsan 用户名
-m :move,迁移家目录时,把"家具"一起迁移到新的家目录
# usermod -md /rhome/zhangsan zhangsan

userdel用户的删除

 userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家目录
-f :强制删除用户(即使用户处于登录状态)
删除zhangsan这个账号:                                          userdel zhangsan
删除zhangsan这个账号,同时删除这个账号的家:     userdel -r zhangsan
删除某个正在使用的账号(强制删除):                    userdel -f zhangsan

passwd修改用户密码

1.管理员root可以给任何用户修改密码
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范(大小写、特殊字符、长度)

#–stdin修改用户密码

[root@19c ~]# echo 123 |passwd --stdin oracle
Changing password for user oracle.
passwd: all authentication tokens updated successfully.
[root@19c ~]# history -c

首次次登陆操作系统后,强制要求其更新密码。
# chage --help
-l:列出用户的详细密码状态;
-d 日期:修改 /etc/shadow 文件中指定用户密码信息的第3个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
-m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第4个字段;
注:几天后才能修改一次密码
-M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第5个字段;
注:每隔多少天更新一次密码
-W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第6个字段;
-i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第7个字段;
注:过期后还可以使用的天数,达到这个天数后,账号失效

-E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第8个字段;
======================================================================
案例:新创建一个账号lamp,设置初始化密码为123456。要求用户第一次登陆后必须强制修改用户的密码。==

```powershell
# useradd lamp
# echo 123456 |passwd --stdin lamp

# chage -d 0 lamp

设置lamp账号的过期时间为2010-04-10

# chage -E "2020-04-10" lamp

案例:设置lamp账号的10天后过期(延伸)

# chage -E $(date +%F -d '+10 days') lamp
%F:YYYY-mm-dd,格式2020-04-01
-d:多少天以后的日期

设置mysql用户60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息

# useradd mysql
# echo 123456 |passwd --stdin mysql

# chage -M 60 -m 7 -W 7 mysql
================================
创建3个普通用户stu1~stu3,要求如下:
1. stu1默认创建,密码为123
2. stu2的家目录为/rhome/redhat/stu2,密码为123
3. stu3用户不能登录操作系统,密码为123

☆ 用户组管理

group组,添加add,修改mod,删除del

groupadd 添加用户组

groupmod 修改用户组

groupdel 删除用户组

☆ 添加用户组

# groupadd [选项 选项的值] 用户组名称
选项说明:
-g :创建用户组时指定用户组编号GID,0代表超级管理员root组,1-999代表系统用户组,1000以后代表普通用户组
在系统中创建一个admin组:                            groupadd admin
在系统中创建一个itcast组,并指定用户组的编号为1200:  groupadd -g 1200 itcast
用户组创建完成后,如何判断是否创建成功?              tail -1 /etc/group

☆ 与用户组相关的文件

在Linux系统中,与用户组相关的文件 => /etc/group

# vim /etc/group
root:x:0:
第1列:代表用户组的组名称
第2列:代表用户组的组密码,使用一个x占位符(基本已经不使用了)
第3列:代表用户的组ID编号GID的值
第4列:代表用户组内的用户信息

☆ 修改用户组

# groupmod [选项 选项的值] 用户组名称
选项说明:
-g :gid缩写,代表修改用户所属组的ID编号
-n :name缩写,代表修改用户组的名称

更改itcast用户的GID编号(从1200 => 1005)

# groupmod -g 1005 itcast

☆ 删除用户组

# groupdel 用户组的名称

注意:在Linux操作系统中,如果想删除某个用户组,必须要保证这个组不能是某个用户的主组。

删除itcast用户组

# groupdel itcast

删除admin用户组

# groupdel admin

7、附属组管理

基本语法:

# gpasswd [选项 选项的值] 用户组的名称
-a :添加用户到组,append追加
-d :从组中删除成员,delete移除
-A :指定管理员,Admin管理员
-M :指定组成员,可以批量添加用户到组中

-a与-M的区别?
-a一次只能追加一个用户到附属组中(-a,append,追加的形式,原有用户不覆盖)
-M一次可以追加多个用户到附属组中(覆盖追加,先把原有用户删除,然后添加我们的用户)

创建3个用户user01~user03,将user01添加到sysadmin组里(附属组)

# useradd user01
# useradd user02
# useradd user03
# groupadd sysadmin

① 方案1
# usermod -G sysadmin user01
② 方案2
# gpasswd -a user01 sysadmin

把user02、user03添加到sysadmin组中

① 方案1
# gpasswd -a user02 sysadmin
# gpasswd -a user03 sysadmin

② 方案2
# gpasswd -M user02,user03 sysadmin

从附属组中移除某个账号

# gpasswd -d 移除的用户名称 附属组名称
# gpasswd -d user03 sysadmin
Removing user user03 from group sysadmin
# gpasswd admin组名称

移除gpasswd -r admin组名称,代表移除组密码

5、把tom用户设定为admin组的组管理员

gpasswd -A tom admin

二、文件权限管理

1、什么是权限

**权限:**在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利

2、权限的目的

文件权限的设置目的:是想让某个用户有权利操作文件

3、权限的分类

  • 普通权限rwx

    用户正常情况去操作文件所具有的权限

  • 高级权限st

    用户对某个文件操作有特殊需求,而普通权限不能满足,需要给文件设置高级权限

  • 默认权限umask

    用户在系统中创建一个文件,该文件默认都会有一个权限,该权限是默认有的

注意:

权限是设置在文件上的,而不是用户

4、普通权限rwx(重点)

☆ read读权限

  • 针对目录

    一个目录拥有r权限,说明可以查看该目录里的内容(ls命令列出)

  • 针对普通文件

    一个普通文件拥有r权限,说明可以查看该文件的内容(cat/head/tail/less/more等命令查看)

  • 读权限==r==(read)用数字表示是**4**

☆ write写权限

  • 针对目录

    一个目录拥有w权限,说明可以在该目录里==创建、删除、重命名==等操作(mkdir/touch/mv/rm等)

  • 针对普通文件

    一个普通文件拥有w权限,说明可以==修改文件的内容==(vi/vim编辑器编辑文件)

  • 写权限==w(write)用数字表示是2==

☆ execute执行权限

  • 针对目录

    一个目录拥有x权限,说明可以==进入或切换到==该目录里(cd命令)

  • 针对普通文件

    一个普通文件拥有x权限,说明可以==执行==该文件(一般程序文件、脚本文件、命令都需要执行权限)

  • 执行权限==x(execute)用数字表示是1==

rwx = 读写执行 = 4 + 2 + 1

☆ -没有权限

没有任何权限用横杠==-表示,数字表示是0==

5、理解UGO

UGO,指的是==用户身份,每个字母代表不同的==用户身份。

  • U(the user who owns it)

    文件的拥有者(owner)或者创建者

  • G(other users in the file’s group)

    在文件的所属组(默认是创建文件的用户的主组)里的用户

  • O(other users not in the file’s group)

    既不是文件的创建者,也不在文件属组里的用户,称为其他人

注意:

​ 除了上面ugo以外,还有一个字母==a(all users),表示所有用户==,包含ugo

6、查看文件的权限

# ls -l 文件名称# ll 文件名称

猜你喜欢

转载自blog.csdn.net/weixin_39735909/article/details/128895943