美文网首页
Linux账号权限

Linux账号权限

作者: 宏势 | 来源:发表于2023-10-30 14:17 被阅读0次

一、用户/组管理

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

文件权限.png

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 :用户登出时执行的命令

相关文章

  • CentOS 用户管理

    整理来源:《鸟哥的Linux私房菜第四版》的第十三章 “账号管理与 ACL 权限设定” 用户账号 Linux 如何...

  • T-05-Linux使用者管理大纲

    1. Linux账号管理与ACL权限设置 要登入 Linux 系统一定要有账号与密码才行,否则怎么登入,您说是吧?...

  • Linux文件权限

    Linux安全性模型 Linux使用User(用户)和Group(群组)控制使用者对文件的存取权限 用户使用账号和...

  • linux修改权限的相关命令

    Linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。 ...

  • python基础:linux的基本命令——用户、权限管理

    1.1Linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管...

  • linux回顾(2)

    1.Linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理...

  • linux

    9. linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管...

  • 20170724 文件权限

    概要 linux文件权限linux文件特殊权限ACL 访问控制列表 一、linux文件权限 (一)linux文件属...

  • jenkins 发版获取镜像仓库中tag

    一、安装阿里云linux客户端工具 选择官网下载地址 二、使用RAM进行子账号权限管理 创建RAM子账号,并对该子...

  • linux文件访问权限

    参考 Linux 简单修改权限命令 Linux权限详解 命令之 chmod:修改权限 Linux命令:修改文件权限...

网友评论

      本文标题:Linux账号权限

      本文链接:https://www.haomeiwen.com/subject/yfldortx.html