Linux账号和权限管理

Linux账号:

用户账户:

|------|---------------------------|
| 超级用户 | root,在系统具有最高权限 |
| 普通用户 | 由root或其他管理员创建的用户,默认只具有低权限 |
| 程序用户 | 用于给应用程序运行的低权限用户,一般不允许登录系统 |

组账户:

|-----|------------------|
| 基本组 | 用户加入的第一个组 |
| 附加组 | 用户额外加入的除了基本组以外的组 |

用户账户的ID和组账户ID :

|-----|--------|
| UID | 用户账户ID |
| GID | 组账户ID |

UID/GID范围:

|------------------|-----------------------------------------------|
| root的UID和GID都固定为0 ||
| 程序用户默认的UID/GID范围 | centos7以前为 1~499;从centos7开始为 1~999 |
| 普通用户默认的UID/GID范围 | centos7以前为 500~60000;从centos7开始为 1000~60000 |

用户账号文件、用户密码文件 :

用户账号文件 /etc/passwd 有7个字段

用户名:x密码占位符:UID:GID:用户说明:家目录:登录shell

允许登录系统/bin/bash 不允许登录系统/sbin/nologin /bin/false

[root@localhost ~]# cat /etc/passwd | wc -l   
45
               //查看用户账号文件夹/etc/passwd 用户文件有多少行

用户密码文件 /etc/shadow 有9个字段

用户名:密码字符串:上一次修改密码的时间:密码最短有限期:密码最长有限期:密码过期提前告警的时间:密码过期禁用用户的时间:账号失效的时间:空

密码最短有限期:默认为0不限制

密码最长有限期:默认为99999永不过期

账号失效的时间:从1970.1.1开始算起

密码过期提前告警的时间:默认为7

创建用户:

useradd 用户名

adduser 用户名

-u 指定UID

-g 基本组名或GID

-G 附加组名或GID

-d 指定家目录

-s 指定登录shell

-M 不建立家目录,不可与-d同时使用

-e YYYY-MM-DD 指定账号失效日期

Last login: Fri Apr 12 22:49:45 2024
[root@localhost ~]# useradd cywl    //创建用户cywl
[root@localhost ~]# vim /etc passwd  //配置文件/etc/passwd
[root@localhost ~]# which useradd
/usr/sbin/useradd
[root@localhost ~]# which adduser
/usr/sbin/adduser
[root@localhost ~]# 
 //adduser  用户名和  useradd是一样的

[root@localhost ~]# man 5 passwd  
//查看passwd文件的格式和内容说明  //man 5 是用来查看配置文件的帮助命令



PASSWD(5)                 File formats                 PASSWD(5)

NAME 名称
       passwd - 密码文件

描述
       Passwd       是个文本文件,      它包含了一个系统帐户列表,
       给出每个帐户一些有用的信息,比如用户  ID,组  ID,  家目录,
       shell,等.           通常它也包含了每个用户经过加密的密码.
       它通常应该是可读的(许多命令,工具程序,象          ls(1)
       用它做用户                                             Id
       到用户名称的映射),但是只允许超级用户有写方式权限.

       在过去美好的日子里,这种一般的读许可没有什么大问题.
       每个人都能读到加密了的密码,因为硬件太慢以至于不能解开一个
       精选的密码,另外,这基本假定是为友好的使用团体使用的.
       现在,许多人运行一些版本的影子密码套件,它们在
       /etc/passwd     的密码域里是      *,而不再是加密的口令,
       加密的口令放在 /etc/shadow 中,那个文件只有超级用户能读.

       不管是否使用了影子密码,许多系统管理员使用一个星号在加密的
密码字段
       以确保用户不能鉴别他(她)自己的密码. (见下面的注意)
 Manual page passwd(5) line 1 (press h for help or q to q

id 用户名 //查看查看uid gid 组名

[root@localhost ~]# id cywl  //查看uid gid 组名
uid=1001(cywl) gid=1001(cywl) 组=1001(cywl)

[root@localhost home]# useradd bb -u 2022 -M -s /sbin/nologin  
        //创建用户bb -u指定uid 2022 -M不建立家目录 -s不允许登录系统
[root@localhost home]# vim /etc/passwd

验证/home/目录下没有bb用户家目录

[root@localhost home]# cd /home/ 
[root@localhost home]# ls
cywl  test
[root@localhost home]# 

[root@localhost ~]# useradd zy -d /opt/tt -g bb
  //创建用户zy 指定家目录是/opt/下新建tt 并和bb基本组
[root@localhost ~]# 

修改用户密码:

passwd [用户名]

-d 清空用户密码

-l 锁定/禁用用户

-u 解锁用户

-S 查看锁定状态

echo 'XXXX' | passwd --stdin 用户名

echo 用户名:密码 | chpasswd

[root@localhost ~]# useradd gmm  //创建用户gmm
[root@localhost ~]# cd /opt
[root@localhost opt]# passwd gmm   //修改gmm的密码
更改用户 gmm 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost opt]# 
[root@localhost opt]# vim /etc/shadow  //配置文件 /etc/shadow

-d 清空用户密码

[root@localhost ~]# passwd -d gmm  //清空gmm的密码
清除用户的密码 gmm。
passwd: 操作成功
[root@localhost ~]# 
[root@localhost ~]# cd /opt   //切换opt目录
[root@localhost opt]# vim /etc/shadow      //配置文件/etc/shadow

-l 锁定/禁用用户 -S 查看锁定状态

[root@localhost opt]# 
[root@localhost opt]# passwd -l gmm  //锁定用户gmm
锁定用户 gmm 的密码 。
passwd: 操作成功
[root@localhost opt]# passwd -S gmm   //查看用户gmm锁定状态
gmm LK 2024-04-13 0 99999 7 -1 (密码已被锁定。)
[root@localhost opt]# 

-u 解锁用户

[root@localhost opt]# passwd -u gmm    //解锁用户gmm
解锁用户 gmm 的密码。
passwd: 操作成功
[root@localhost opt]# passwd -S gmm     //查看gmm的锁定状态
gmm PS 2024-04-13 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

解锁空密码账户会 警告 如果想解锁 passwd -u -f [用户名]

快捷设置密码 echo 'XXXX' | passwd --stdin 用户名 // --stdin是代表键盘输入

echo 用户名:密码 | chpasswd

[root@localhost opt]# echo abc1234 | passwd --stdin gmm  //输出abc234 被管道符号|捕获  交给passwd修改账号密码 密码要键盘输入 所有--stdin模拟键盘输入
更改用户 gmm 的密码 。
passwd:所有的身份验证令牌已经成功更新。

[root@localhost opt]# echo gmm:abc1234 | chpasswd

修改已存在的用户:

usermod 用户名 -l 新用户名 修改用户名

-L 锁定/禁用用户

-U 解锁用户

-u 指定UID

-g 基本组名或GID

-G 附加组名或GID

-d 指定家目录

-s 指定登录shell

-e YYYY-MM-DD 指定账号失效日期

[root@localhost opt]# usermod gmm -l mm  // 修改用户名gmm------>mm
[root@localhost opt]# usermod mm -L      //锁定/禁用用户mm   
[root@localhost opt]# usermod mm -U      //  解锁用户mm
[root@localhost opt]# usermod mm -u 1314 -g 1001  //修改用户mm的uid1314 gid1001
[root@localhost opt]#
[root@localhost opt]# 


[root@localhost ~]# usermod mm -G kfc    //mm用户附加组名kfc
[root@localhost ~]# id mm                 //查看mmuid gid 组和附加组
uid=1314(mm) gid=1001(cywl) 组=1001(cywl),2025(kfc)
[root@localhost ~]# usermod -s /bin/bash bb    //指定登录用户为bb shell改为bash
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# echo mm:123456 | chpasswd     //输出密码123456 到mm
[root@localhost ~]# usermod mm -e 2024-12-31      //修改mm账号账号失效日期
[root@localhost ~]# vim /etc/shadow
[root@localhost ~]# 

删除用户:

userdel [-r] 用户名 #-r代表删除用户时,家目录也会一起删除

[root@localhost home]# userdel sy1   //删除用户sy1
[root@localhost home]# ls            //查看,用户sy1家目录还存在
cywl  gmm  sy1  test
[root@localhost home]# rm -rf sy1     //删除sy1家目录
[root@localhost home]# ls
cywl  gmm  test                        //sy1家目录不存在
[root@localhost home]# 


[root@localhost home]# userdel -r sy3 //删除用户sy3同时删除用户家目录
[root@localhost home]# ls
cywl  gmm  sy2  sy4  test
[root@localhost home]# 

系统/用户环境初始化配置文件:

|-------------|---------------------------------------------|----------|
| 系统环境初始化配置文件 | /etc/profile /etc/bashrc | 对所有用户有效 |
| 用户环境初始化配置文件 | ~/.bash_profile ~/.bashrc ~/.bash_logout | 只对当前用户有效 |

/etc/profile ~/.bash_profile #设置用户每次登录时要执行的命令

/etc/bashrc ~/.bashrc #设置切换shell环境时(包括登录系统时)要执行的命令

~/.bash_logout # 设置退出登录或shell环境时执行的命令

组账号文件:

/etc/group 有4个字段

组账号名:x占位符:GID号:组账号成员

[root@localhost ~]# vim /etc/group    //查看当前系统中的组
[root@localhost ~]# cat /etc/group | wc -l    //统计系统中有多少组
78

添加组账号:

groupadd [-g GID] 组名

[root@localhost ~]# groupadd xy102 -g 1314   //添加组账号xy102 -g 1314
[root@localhost ~]# 

管理组账号的成员:

gpasswd 组名 -a 用户名 #添加组成员

-d 用户名 #删除组成员

-M 用户1,用户2,... #重新定义组成员列表

[root@localhost ~]# gpasswd xy102 -a cywl  //cywl 加入到 xy102组
正在将用户"cywl"加入到"xy102"组中
[root@localhost ~]# 
[root@localhost ~]# vim /etc/group    //查看当前组
[root@localhost ~]# 
[root@localhost ~]# gpasswd xy102 -d sy2    //sy2从xy102组中删除
正在将用户"sy2"从"xy102"组中删除
[root@localhost ~]# vim /etc/group          //查看当前组
[root@localhost ~]# gpasswd xy102 -M zy,bb     //重新定义组xy102成员zy,bb
此操作会自动清空之前组成员
[root@localhost ~]# vim /etc/group

删除组账号:

groupdel 组名

[root@localhost ~]# 
[root@localhost ~]# groupdel xy101     //删除组101
[root@localhost ~]# vim /etc/group

查询用户的组信息:

groups 用户名

id 用户名 //id比groups更全面

[root@localhost ~]# groups zy //查询用户的组信息
zy : bb xy102
[root@localhost ~]# id zy     //查询用户的组信息
uid=2023(zy) gid=2022(bb) 组=2022(bb),1314(xy102)
[root@localhost ~]# 

查询登录系统的用户:

w who users

[root@localhost ~]# w
 17:22:47 up  5:04,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               10:13   ?xdm?  58.20s  0.15s /usr/libexec/gnome-session-binary --session gnome-classic
root     pts/1    20.0.0.1         15:12   23:19   0.05s  0.01s vim /etc/passwd
root     pts/2    20.0.0.1         16:04    7.00s  0.10s  0.02s w
[root@localhost ~]# who
root     :0           2024-04-13 10:13 (:0)
root     pts/1        2024-04-13 15:12 (20.0.0.1)
root     pts/2        2024-04-13 16:04 (20.0.0.1)
[root@localhost ~]#  users
root root root
[root@localhost ~]# 

文件权限 :

|------|-----|-----|-------------|----------|
| 字符表示 | r 读 | w 写 | x 执行文件/切换目录 | - (没有权限) |
| 数字表示 | 4 | 2 | 1 | 0 |

[root@localhost ~]# ll /etc/passwd   
-rw-r--r--. 1 root root 2486 4月  13 16:25 /etc/passwd
[root@localhost ~]# mkdir /data     //新建目录date
[root@localhost etc]# cd /data/     //切换date目录
[root@localhost data]# touch sy1
[root@localhost data]# touch sy2
[root@localhost data]# touch sy3
[root@localhost data]# ll           //查看
总用量 0
-rw-r--r--. 1 root root 0 4月  13 17:28 sy1
-rw-r--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 

设置权限:

chmod [-R] rmx 文件/目录 #-R表示递归修改目录及其所有子目录和文件权限

chmod +rwx 文件/目录 #添加权限

  • #删除权限

= #重新定义权限

[root@localhost data]# chmod -R 777 sy1   //设置sy1权限
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 4月  13 17:28 sy1
-rw-r--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3

[root@localhost data]# chmod +621 sy2  添加权限
[root@localhost data]# 
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 4月  13 17:28 sy1
-rw-rw-r-x. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 

[root@localhost data]# chmod -004 sy2   删除sy2权限
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 4月  13 17:28 sy1
-rw-rw----. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 

[root@localhost data]# chmod =744 sy2   //重新定义权限
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 4月  13 17:28 sy1
-rwxr--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 

设置归属:

chown [-R] 属主 文件/目录

:属组

属主:属组

属主.属组(:可以用.来表示,效果一样)

[root@localhost data]# chown -R cywl:cywl sy1   属主cywl 属组cywl
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 cywl cywl 0 4月  13 17:28 sy1
-rwxr--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 
[root@localhost data]# chown -R zy sy1          属主zy
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 zy   cywl 0 4月  13 17:28 sy1
-rwxr--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 
[root@localhost data]# chown -R cywl.sy4 sy1     属主cywl   属组sy4
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 cywl sy4  0 4月  13 17:28 sy1
-rwxr--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
[root@localhost data]# 

设置默认权限:

umask nnn

查询umask的值 umask

文件的最大默认权限为 6 目录的最大默认为 7

新建的文件/目录的默认权限 = 最大默认权限 - umask值

[root@localhost data]# umask 022   设置默认权限022
[root@localhost data]# touch sy5      新建文件夹sy5
[root@localhost data]# ll
总用量 0
-rwxrwxrwx. 1 cywl sy4  0 4月  13 17:28 sy1
-rwxr--r--. 1 root root 0 4月  13 17:28 sy2
-rw-r--r--. 1 root root 0 4月  13 17:28 sy3
-rw-r--r--. 1 root root 0 4月  13 18:07 sy5
[root@localhost data]# 
相关推荐
Pythonliu73 分钟前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我4 分钟前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、5 分钟前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程5 分钟前
Linux中环境变量
linux
我是哈哈hh19 分钟前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈23 分钟前
C++——模板进阶、继承
java·服务器·c++
挥剑决浮云 -41 分钟前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
立秋67891 小时前
Python的defaultdict详解
服务器·windows·python
Lansonli1 小时前
云原生(四十一) | 阿里云ECS服务器介绍
服务器·阿里云·云原生
小O_好好学2 小时前
CentOS 7文件系统
linux·运维·centos