一、用户/组管理
Linux是一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。
1.用户分类:
- 超级用户:也就是管理员账号root,是系统的最高权限用户,拥有对系统的完全控制权。用户id为0。
- 系统用户:由操作系统本身使用的用户账户,用于运行系统服务和进程,比如bin,rpc,登录终端是/sbin/nologin,不能够正常登录服务器,id范围为1-999。
- 普通用户:普通用户是系统中的一般用户,用于执行一般的日常任务和该用户相关的任务,登录终端是/bin/bash,允许登录。
cat /etc/passwd
查看用户列表
2.组
Linux系统以组Group方式管理用户,用户和组的对应关系为多对多,即某个用户可加入/属于一个或多个组,某个组可以有0个、1个或多个用户。从用户的角度,可以分为主组 和附属组, 用户有且只能有一个主组。
cat /etc/group
查看用户组列表,记录行第四个字段显示该组作为附属组的组成员
3.管理命令
1) 显示用户和组信息
id #显示当前用户的用户信息和组信息
id bin # 显示bin用户的信息和组信息
group #显示当前主组的信息
2) 用户操作
useradd test #创建test用户
useradd test -s /sbin/nologin #创建一个不允许登录test用户
useradd test -g root #创建一个指定主组为root 的test 用户
usermod -l test1 -d /home/test1 -m test #修改用户test 为test1
passwd test #设置test用户密码
userdel test #删除test 用户
userdel test -r #删除test 用户且删除其home目录
3) 组操作
groupadd test #创建test组
usermod -g docker test # 修改用户test的主组为docker
usermod -G test1,test2 test #设置用户test的附属组列表
newgrp test2 #当前session 切换用户的主组
groupdel test #删除test 组,如果存在用户的主组是test,则不能删除该组
groupmod -h #查看修改组信息的详细参数
gpasswd test #设置test组的密码,当用户要切换到不包含它的用户组时,需要输入密码
4) 口令管理
passwd -d test #删除口令,则该账号无法登录
passwd -l test #锁定口令,即禁用账号
passwd -u test # 解锁口令
passwd -f test #强迫用户下次登录时修改口令
chage -l test #查看用户密码设定情况
chage -d 0 test #强制用户登录时修改口令
chage -M 30 test #设置用户30天修改一次密码
chage -E 2023-11-01 test #设置账号过期时间
chage -d 2023-10-01 test #设置账号上次修改密码时间,如果密码过期了,可以修改时间
密码过期,可以用老密码进行登录,登录后必须修改密码
账号过期,是不可以登录
5)/etc/login.defs
针对新建用户,默认信息设置,
PASS_MAX_DAYS 99999 #密码有效期天数,默认是90天
PASS_MIN_DAYS 0 #密码修改间隔,默认是7
PASS_MIN_LEN 5 # 密码最小长度,默认是5
PASS_WARN_AGE 7 #告警天数,默认是7,即过期前7天进行提醒
6)/etc/default/useradd
针对新建用户,默认信息设置,可设置过期日期
GROUP=100 #默认组
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
7) 登录相关命令
ssh root@ip -p 22 #ssh登录
last #列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件
w #显示登录到系统的用户信息
who #显示登录到系统的用户信息
8) 端口修改
vi /etc/ssh/sshd_config #修改 Port 22 端口号 为 Port 59763
systemctl restart sshd #重启ssh服务
9) 相关存储文件如下:
文件名称 | 描述 | 行格式 |
---|---|---|
/etc/passwd | 存储用户信息 | 用户名:密码占位符:用户编号(uid):归属组编号(gid):用户描述(可为空):家目录:shell路径 |
/etc/shadow | 存储用户的密码信息 | 用户名:加密后的密码:上次修改密码日期:密码策略(4个数字):账号失效日期:保留位 |
/etc/group | 存储用户组信息 | 组名:密码位:组编号:组内成员 |
/etc/gshadow | 存储组的密码信息 | 组名:密码:组管理员:组内成员 |
/etc/sudoers | 配置命令执行权限 | 用户名:权限定义:权限(sudo) |
4.普通SSH登录
假设A服务器ssh链接B服务器:ssh 账号@ip -p 端口号
- A服务器发送ssh连接请求
- B服务器返回公钥给A服务器
- A用B服务器给的公钥加密密码信息,发送给B服务器
- B服务器用密钥解密并验证密码,通过则建立ssh连接
不能保证正在连接的服务器就是你想连接的服务器(服务器伪造,泄露密码)
5.免密登录
假设A服务器ssh链接B服务器:
- A服务器上生成公私钥对
ssh-keygen -t rsa
生成两个文件id_rsa
,id_rsa.pub
- 将生成的公钥拷贝到目标机器B上
ssh-copy-id 机器B
, 也可以手动scp -P 22 ~/.ssh/id_rsa.pub root@hostB:~/.ssh/authorized_keys
- A服务器发起SSH连接 ssh root@hostB,
- B服务器收到请求,根据信息查找对应的机器A的公钥,并与A发过来公钥对比,如果一样则B服务器用公钥质询(生成一个随机数,并用A的公钥加密)返回客户端,不一样提示输入密码。
- A服务器用私钥解密,然后将解密后的随机数发给B服务器
- B服务器接收到随机数 与本地对比,如果一致,则允许免登录
~/.ssh/
文件夹里文件说明:
文件名称 | 文件功能 |
---|---|
known_hosts | 记录ssh访问过计算机的公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过的无密登录服务器公钥 |
二、文件权限
1.文件属性
执行ls -l

1). 第一位代表这个文件是目录、文件或者链接文件等等
- 若为 d 则是目录
- 若为 - 则是文件
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
2). 接下来字符三个为一组,且均为读/写/执行 (rwx
) 的三个参数的组合,没有权限-
- 第一组(1-3):确定属主(该文件的所有者)拥有该文件的权限
- 第二组 (4-6):确定属组(所有者的同组用户)拥有该文件的权限
- 第三组(7-9): 确定其他用户拥有该文件的权限
2. 文件属性变更
1)chown:更改文件或目录的所有者,也可以是属组
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
2)chgrp:更改文件或目录的属组
chgrp [-R] 属组名 文件名
3) chmod 更改文件9个属性,即 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限
- 二进制数字法
例如当权限为:-rwxrwx---
, 分数为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
chmod 644 /usr/local/src/test.txt # 文件设置为 -rw-r--r--,属主读写,属组只读,其它用户只读
- 符号类型法(支持加减权限)
chmod u=rw,g=r,o=r /usr/local/src/test.txt # 文件设置为 -rw-r--r--,属主读写,属组只读,其它用户只读
chmod u+x,g+w,o-r /usr/local/src/test.txt # 文件属主增加执行权限,属组增加写权限,其它用户去掉只读权限
三、环境变量
三种方式设置环境变量:
-
/etc/profile
文件变量对所有用户生效,且是永久生效,需立马生效执行source /etc/profile
- 在用户目录下的
.bash_profile
文件中增加变量对单一用户生效,且是永久的,需立马生效执行source ~/.bash_profile
一般会在~/.bash_profile
文件中显式调用~/.bashrc
,所以也可以在~/.bashrc
文件修改 - 直接运行
export
命令定义变量只对当前登录的shell有效(临时)
常用文件介绍:
-
~/.bash_history
: 保存了当前用户使用过的历史命令 -
~/.bash_logout
:用户登出时执行的命令
网友评论