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]# 
相关推荐
惜.己1 分钟前
Linux常用命令(十四)
linux·运维·服务器
linkingvision1 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa1 小时前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu1 小时前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287562 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
belldeep2 小时前
WSL 安装 Debian 12 后,Linux 如何安装 vim ?
linux·debian·vim
wqqqianqian2 小时前
国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域
linux·word·自定义·pageoffice·数据区域
小疆智控2 小时前
数字化工厂升级引擎:Modbus TCP转Profinet网关助力打造柔性生产系统
服务器·网络·tcp/ip
南棱笑笑生2 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
XMYX-02 小时前
Linux du 命令终极指南:从基础到精通
linux·服务器