Linux常用命令之用户(组)、权限管理命令

10 篇文章 0 订阅

用户和用户组管理
用户
  • tty: 查看当前终端
  • whoami: 显示当前用户正在使用的终端和登录时间
    • who am i命令
  • w: 查看所有终端(详细信息)
  1. 用户配置文件/etc/passwd权限755, /etc/shadow权限000
  2. /etc/passwd文件字段含义:
    • 第1个字段: 用户名称
    • 第2个字段: 密码标志
    • 第3个字段: UID用户ID号
      • 0: 超级用户
      • 1-499: 系统用户(伪用户)
      • 500+: 普通用户
    • 第4个字段: GID(用户初始组ID)
    • 第5个字段: 用户说明信息
    • 第6个字段: 用户家目录
      • 普通用户: /home/用户名
      • 超级用户: /root/
    • 第7个字段: 登录后使用的Shell命令解释器
      • /bin/bash: 默认shell
      • /sbin/nologin: 禁止登陆
  3. 初始组和附加组:
    • 每个用户默认有与其名称相同的用户组(可以更改但不建议)
    • 附加组, 用户可以有多个附加组
  4. 影子文件/etc/shadow
    • 第1字段: 用户名
    • 第2字段; 加密密码
      • 加密算法升级为SHA512散列算法
      • 如果密码位开头是!!*表示没有密码, 不能登录
    • 第3字段: 密码最后一次修改时间(1970/1/1之后的时间戳, 单位是天)
    • 第4字段: 两次密码的修改间隔时间(和3相比)
    • 第5字段: 密码有效期(和3相比)
    • 第6字段: 密码到期前警告提前提示天数(和5相比)
    • 第7字段: 密码到期后的宽限时间(和5相比)
      • 0: 表示立即失效
      • -1: 表示永远不会失效
    • 第8字段: 账号的失效时间点(时间戳表示)
    • 第9字段: 保留,未用
组信息文件
  1. /etc/group
    • 组名:组密码标志:GID:组中附加用户
  2. /etc/gshadow
    • 组名:组密码(不推荐使用, 不常用):组管理员:组中附加用户
用户管理相关文件
  1. 用户家目录: 用户登录初始目录
    • 超级用户: /root/, 所有者和所属组都是root, 权限是550
      • 如果普通用户改为超级用户(UID=0), 家目录不变, 权限改变
    • 普通用户: /home/用户名/, 所有者和所属组都是此用户, 权限是700
  2. 用户的邮箱
    • /var/spool/mail/用户名/
  3. 用户模板目录
    • /etc/skel/: 每次添加新用户时, 用户家目录的默认初始目录文件
添加用户命令useradd
  1. useradd [选项] 用户名: 添加新用户
    • -u UID: 手动指定UID
    • -d 家目录: 手动指定家目录
    • -c 用户说明: 手动指定用户说明
    • -g 组名: 手动指定用户的初始组
    • -G 组名: 指定用户的附加组(多组逗号隔开)
    • -s shell: 手动指定用户登录shell, 默认/bin/bash
  2. 用户默认配置文件/etc/default/useradd
    • GROUP=100 # 用户默认组
    • HOME=/home # 用户家目录
    • INACTIVE=-1 # 密码过期宽限天数(shadow文件7字段)
    • EXPIRE= # 密码失效时间
    • SHELL=/bin/bash # 默认shell
    • SKEL=/etc/skel # 模板目录
    • CREATE_MAIL_SPOOL=yes # 是否建立邮箱
  3. etc/login.defs
    • PASS_MAX_DAYS 99999 # 密码有效时间
    • PASS_MIN_DAYS 0 # 密码有修改间隔
    • PASS_MIN_LEN 8 # 密码最小位数(现已更为PAM)
    • PASS_WAEN_AGE 7 # 密码到期提前警告时间
    • UID_MIN 500 # UID范围
    • UID_MAX 60000 # UID范围
    • ENCRYPT_METHOD SHA512 # 加密模式
用户管理命令

创建用户后, 不设置用户密码则该用户不能登录

  1. passwd 用户名: 只能root用户使用, 修改指定用户密码
  2. passwd: 修改当前用户密码, 所有用户都可以用
  3. passwd [选项] 用户名
    • -S: 查看用户信息
    • -l: 锁定用户(shadow文件密码前!!)
    • -u: 解锁用户
    • --stdin: 接收字符串作为密码, 可以用于批量设置, 可以结合管道符操作
usermod和change
  1. usermod和useradd的选项大致相同,useradd用于创建用户时指定一些信息, usermod用于修改已存在的用户
    • -L:临时锁定用户(密码前加一个!
    • -U: 解锁用户
  2. chage [选项] 用户名
    • 修改用户状态信息
    • chage命令繁琐, 常常直接用vim修改配置文件
    • chage -d 0 用户名: 修改用户上次密码修改时间为0(表示从未修改过)
      • 系统会在用户登录时强制其修改密码, 然后使用新密码登录
      • 该命令常用需要某用户修改密码时
userdel, id和su
  1. 删除用户userdel [-r] 用户名
    • -r: 连带家目录也删除, 通常带此选项
  2. id 用户名
    • 查看用户的id信息(包括组id)
  3. su [选项] 用户名: 切换用户
    • -: 带用户环境变量一起切换
    • -c "命令": 以目标用户执行一次命令而不切换身份
用户组管理命令
  1. 添加组 groupadd [选项] 组名
    • -g GID: 指定GID
  2. 修改组 groupmod [选项] 组名
    • -g GID: 修改组ID
    • -n 新组名: 修改组名
  3. 删除组 groupdel 组名
    • 如果组内有初始用户, 则该组不能删除
    • 附加用户不影响组删除
  4. 组添加/删除用户 gpasswd [选项] 组名
    • -a 用户名: 把用户加入组
    • -d 用户名: 把用户从组删除
    • 注意gpasswd管理的是附加组
其它权限管理

ACL权限: 指定其它某用户/组的权限(所有者,所属组和其他人三种权限方式不够,需要赋予独立权限)

  1. setfacl -m u:用户名:权限 [-R] /目录或文件: 设置acl权限
    • setfacl -m g:组名:权限 /目录或文件
    • setfacl -m m:最大权限(mask) /目录或文件: 设置权限掩码
    • mask掩码, 除了所有者外, 其余权限都受mask影响
    • -R选项表示对目录递归操作
    • 该操作只作用已存在的文件目录, 对之后新建的文件无效
  2. getfacl 目录或文件: 查看acl权限
  3. setfacl -b 文件名: 删除acl权限
  4. setfacl -m d:u:用户名:权限 [-R] /目录或文件
    • 该命令针对未来新创建的目录文件设置默认acl权限, 不影响已存在的文件
文件特殊权限

SetUID权限: 用户执行某命令时(需要x权限)临时具有该命令所有者的身份)

  1. 4代表SUID权限(权限以s显示, S表示错误的SUID权限(因为没有x权限))
    • 设置权限:(只能作用于文件)
      • chmod 4755 文件名
      • chmod u+s 文件名
    • 取消权限:
      • chmod 755 文件名
      • chmod u-s 文件名
    • SUID权限很危险
      • 关键命令文件要严格控制权限
      • 一些命令要严格检查setUID权限(如过vim所属root并且拥有SUID权限, 则任意用户可以通过vim修改任意系统文件😱)

SetGID权限: 临时具有组成员身份, SGID可以作用于目录和文件, 用2代表

  • chmod 2755 文件/目录
  • chmod g+s 文件/目录

Sticky BIT权限: 只能作用于目录, 用1代表

  • 其它用户需要具有目录的wx权限
  • 设置SBIT粘着位, 即使有w权限, 普通用户也只能删除修改自己的文件, 不能删除其它人的文件
  • chomd 1755 目录
  • chmod o-t 目录

chattr权限: 文件系统属性, 特点:对root用户也有效

  • chattr [+-=]属性 目录或文件
    • +-=: 增加/取消/赋予属性权限
    • i: 锁定文件/目录, 不允许修改文件(相当于只读)或改变目录结构(可以修改目录下文件)
    • a: 只能增加修改, 不能删除(相当于锁定现有数据), 目录可以新建和修改, 不能删除

sudo权限

  • 把只能root执行的命令赋予普通用户执行
  • sudo操作的对象是系统命令
    • visudo: 实际修改的是/etc/sudoers配置文件
      • root ALL=(ALL) ALL: 系统默认root具有所有权限
        • 对应格式为用户名 管理的Linux主机=(可用身份) 权限信息
        • 具体信息查看/etc/sudoers.d文档
      • 访问的主机IP只能写ALL或本机IP, 限制的是访问的目标IP, 其它会禁止用户登录
      • 可用身份可以不写
      • 权限信息尽量写的详细(即最小原则), 否则权限越模糊危险性越大
      • 对于一些具有修改权限的命令的sudo要谨慎使用, 否则普通用户可能会滥用修改

其它用户/组命令

传送门

  1. chmod [{ugoa}{+-=}{rwx}] [文件或目录]
    [mode=421] [文件或目录]
    • -R: 递归修改目录下所有文件或目录
    • ugoa: 对所有者/所属组/其他人/所有人进行权限操作
    • +-=: 增加/删除/赋予权限
    • rwx:可读/可写/可执行
      • 文件:
        • r: 通过cat/more/less/head/tail可获取文件内容
        • w: vim; 可编辑文件内容
        • x: script command; 可执行
      • 目录:
        • r: ls; 可查看目录结构
        • w: touch/rm/rmdir/cp/mv; 可修改目录结构
        • x: cd; 可进入目录
      • 目录的rx权限一般绑定存在
    • mode: r w x - 分别表示4 2 1 0
  2. chown [用户] [文件或目录]
    • 将[文件/目录]的所有者更改为[用户]
    • chown还可以修改所属组:
      • chown 用户名:组名 文件目录: 同时修改所属组
  3. chgrp [用户组] [文件或目录]
    • 将[文件/目录]的所属组更改为[用户组]
  4. umask: 管理默认权限
    • -S: 以ugo格式查看默认权限
    • umask 421: 表示缺省权限去除, 即实际权限为777-421=356
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值