Linux 用户以及用户权限

一、用户管理

从用户的配置文件以及配置命令的方式来了解用户管理,命令也是将结果写入到配置文件

用户配置文件

不建议直接修改配置文件!!!

账号 /etc/passwd
内容解析
    root:x:0:0:root:/root:/bin/bash
    用户名:密码:UID:GID:账号解释:家目录:shell

注意事项:

        1、UID为0就是超级用户

        2、shell 设置为/sbin/nologin 时账号无法登录

密码 /etc/shadow
内容解析
    root:$6$M9G.0hEG...:18417:0:99999:7:::
    用户名:加密密码:最近更改时间:不可改动时间:密码过期时间:过期前提醒时间:过期延期时间:失效日期:保留

注意事项
    1、密码前加!或者*就是锁定密码,不要直接修改文件,会导致密码失效

    2、密码失效后,无法登录

用户组 /etc/group
内容解析
    sys:x:0:jog,bob
    组名:群组密码:GID:这个组内的用户名

注意事项:

        1、群组密码一般不用设置

        2、这里的群组用户指存在多个组中的用户,也就是额外的用户

用户默认初始化模板
创建用户参考文档 *
    /etc/default/useradd
    /etc/login.defs
    /etc/skel/*

注意:

        如果家目录被删了,登录显示~/.bashrc,可以从/etc/skel/.bashrc 拷贝再自定义恢复

特权用户配置 /etc/sudoers

可以针对用户或者用户组设置特定或者全部命令的权限,通常用来为普通用户授权root权限

常见用户查看命令

id
    id 显示当前用户信息
    id username 显示指定用户信息
groups
    groups 查看当前用户属组
        zhh : sysadmin root
        主用户群 : 次要用户群
    groups username 查看指定用户属组
w    Show who is logged on and what they are doing
who  show who is logged on
last show listing of last logged in users

常见密码相关命令

passwd 
man passwd

passwd 修改当前用户密码
passwd username 修改指定用户密码,需要提权
passwd -S username 用户状态
    root PS 2023-02-02 0 99999 7 -1 (Password set, SHA512 crypt.)
    用户名 状态 修改时间 不可修改时间 过期时间 过期警告时间 失效时间 解释信息
passwd -l username 锁定用户
passwd -uf username 强制解锁用户
passwd -e username  强制用户密码过期

echo "password" | sudo passwd --stdin myuser1 明文设置密码

注意:空密码会在一定时间后被锁定,不影响有指纹的免密链接,没有指纹的免密也会连接失败

状态:

locked password (LK)

has no password  (NP)

has  a  usable password (PS)

chage
man chage
chage - change user password expiry information

chage -l username 查看密码状态
chage -M -1 username 密码永不过期
chage -m 6 -M 90 -E -1 -I -1 -W 30
    -m 密码最小修改间隔,限制密码更新
    -M 密码有效时间,区间内未更新会提示修改密码
    -E 密码过期时间,过期会提示修改密码
    -I 密码失效时间,失效无法登录
    -W 密码过期前多少天提醒

账号管理

用户添加
id 查看当前用户的用户和组信息

useradd username 添加用户
useradd -u UID -g GID -G GID username
useradd -D 查看预设值

参数:
    -u :后面接的是 UID
    -g :后面接的那个组名就是主组
    -G :后面接的组名是次要组
    -M :强制!不要建立用户家目录!(系统账号默认值)
    -m :强制!要建立用户家目录!(一般账号默认值)
    -d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径
    -s :后面接一个 shell ,若没有指定则预设是 /bin/bash
    -f :后面接失效时间,0 为立刻失效,-1 为永远不失效

注意:

创建用户以后, /etc/shadow 内仅会有密码参数而不会有加密过的密码数据,所以需要设置密码

用户删除
userdel
    userdel username
    userdel -r username 一同删除家目录
用户管理
usermod
    usermod username -g GID/groupname 设置主要用户组
    usermod username -G GID/groupname 设定次要用户组
    usermod username -aG GID/groupname 追加次要群组 
锁住初始密码的用户(已锁用户不再重复锁定) 

这个主要逻辑是通过参数来判断新用户,然后awk截取用户名,再依据passwd 命令来锁定用户

grep '0:6:90:30' /etc/shadow|grep -v '!'|awk -F ":" '{print $1}'|xargs -n 1 passwd -l
用户组管理

不常用,与用户管理差不错
groupadd
groupdel
groupmod

一些常见用户故障排查

用户无法登陆
1. shell 为/sbin/nologin
grep username /etc/passwd

2. 密码过期或者被锁定
chage -l username

3. sshd 设定root用户无法登陆
grep 'PermitRootLogin' /etc/ssh/sshd_config

4. vim /etc/security/access.conf 配置的pam 限定了用户登录
表现为:
    正确密码:Authentication failed.
    错误密码:Permission denied, please try again.

5. vim /etc/pam.d/login 中其他设置限定

6. vim /etc/pam.d/sshd 中其他设置限定

7. iptables对端口和IP做了限制
iptables --list

8. 这里限制了IP
/etc/hosts.allow
/etc/hosts.deny

还有很多其他的情况,比如有些机器经过ldap.conf文件,或者用户的环境变量配置里面写了脚本启动失败,或者ld.so.preload 库文件被修改,还有fs.nr_open fs.file-max 这些参数被改小了等等各种问题。后期整理一下,再写一篇记录登录失败的排查文章。

无法修改密码

报错token验证失败,无法修改密码

passwd: Authentication token manipulation error

经检查是根目录满了,/home目录没挂出来,也满了


二、权限管理

用户权限管理命令

visudo 编辑/etc/sudoers 文件,会对内容进行语法检查校验

visudo -c # 检查校验
/etc/sudoers: parsed OK

细化权限设定 (ACL)

getfacl
getfacl filename
# file: aaa      文件名
# owner: root    拥有者
# group: root    属组
user::rwx        
group::r-x
other::r-x
user:myuser1:rwx     针对用户特殊权限
group:mygroup1:r-x   针对用户组权限
setfacl
setfacl
    参数:
        -m :设定后续的 acl 参数给文件使用,不可与 -x 合用
        -x :删除后续的 acl 参数,不可与 -m 合用
        -b :移除『所有的』 ACL 设定参数
        -k :移除『预设的』 ACL 参数
        -R :递归设定 acl ,亦即包括次目录都会被设定起来
        -d : 设定『预设 acl 参数』的意思,针对目录
    使用:
        u:[使用者账号列表]:[rwx]
        setfacl -m u:myuser1:rx filename
        g:[群组列表]:[rwx] 
        setfacl -m g:mygroup1:rx filename

PAM 相关

/etc/pam.d/*:每个程序个别的 PAM 配置文件

/lib64/security/*:PAM 模块文件的实际放置目录

/etc/security/*:其他 PAM 环境的配置文件

/usr/share/doc/pam-*/:详细的 PAM 说明文件

关于root用户登录问题:

telnet 使用/etc/pam.d/login模块,这个模块使用pam_securetty,由于远程连接动态端口

        没有写入到/etc/securetty所以会登录失败

ssh 使用/etc/pam.d/sshd模块,这个模块验证没有使用pam_securetty 所以可以登录

用户切换

注意:不加'-',不会切换环境变量,这关于是否启动一个子shell

su - username 切换用户

sudo su - 切换到root

sudo -u username id   使用username用户执行id命令

man su
-, -l, --login
    Starts the shell as login shell with an environment similar to a real login:
        o      clears all environment variables except for TERM
        o      initializes the environment variables HOME, SHELL, USER, LOGNAME, PATH
        o      changes to the target user's home directory
        o      sets argv[0] of the shell to '-' in order to make the shell a login shell

免密登录

这里只提供了一种简单的免密方式,ssh-copy-id 简单来说是ssh 将公钥追加到对方家目录~/.ssh/authorized_keys

# ssh-keygen -t rsa          #一直回车即可
# ssh-copy-id -i /local_username/.ssh/id_rsa.pub -p22 remote_username@xxx.xxx.xxx.xxx #回车, 输入远程登录的密码即可 

三、用户登录过程

strace 命令 trace system calls and signals,这个可以用来追踪命令的系统调用

strace ssh username@xxx.xxx.xxx.xxx 可以查看实际ssh是如何登陆到服务器的

OpenSSH:OpenSSH 是一种流行的 SSH 服务器,可用于远程连接到 Linux 服务器。它可以使用密码、公钥或其他身份验证方法来进行身份验证

PAM:PAM(Pluggable Authentication Modules)是一种允许系统管理员配置不同身份验证方法的框架。它可以与 OpenSSH 等应用程序一起使用来提供中央身份验证

LDAP:LDAP(轻量级目录访问协议)是一种用于存储和检索目录信息的协议。它可以与 PAM 一起使用来提供中央身份验证。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值