首页 > 系统相关 >Linux学习笔记(10)——Linux账号管理与ACL权限设置

Linux学习笔记(10)——Linux账号管理与ACL权限设置

时间:2022-11-12 09:11:26浏览次数:45  
标签:bin 10 admin 用户组 ACL etc Linux root localhost

Linux账号管理与ACL权限设置

一、Linux的账号与用户组

1.1 用户标识符:UID与GID

Linux主机仅认识ID(一组号码),每个登录的用户至少都会获取两个ID

  • 用户ID(User ID,简称UID)
  • 用户组ID(Group ID,简称GID)

1.2 用户账户

用户输入账号密码后,系统处理了什么?

  1. 先查找/etc/passwd里是否有你输入的账号,若有的话则读取UID与GID,此外,将该账号的家目录与shell设置也一并读出
  2. 核对密码表,Linux进入/etc/shadow里进行核对
  3. 一切通过,进入shell管理阶段
  • /etc/passwd文件每一行代表一个账号

    [root@localhost ~]# head -n 4 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    账号名称:密码:UID:GID:用户信息说明栏:家目录:shell
    
    • UID范围
      • 0:系统管理员
      • 1~999:系统账号(除了0之外的UID权限相同,保留1000以下的数字留给系统作为保留账号是一个习惯)
        • 1~200:由Linux发行版自行建立的系统账号
        • 201~999:若用户有系统账号需求,可以使用的用户ID
      • 1000~60000:可登录账号
  • /etc/shadow文件结构

    [root@localhost ~]# head -n 4 /etc/shadow
    root:$6$m/Uw7TAhFRyWJr.3$GTxC4qNEszBQ/  QXNu0PT1ue3ubkxpZ2O0T.    UM2rCud6MEKXb996fBTn10EkasOmv/  H5E3HFWZrJPpdyzitXOt0::0:99999:7:::
    bin:*:18353:0:99999:7:::
    daemon:*:18353:0:99999:7:::
    adm:*:18353:0:99999:7:::
    账号名称:密码(经过编码的密码):最近修改密码的日期(1970-1-1累加):密码不可被修改的天数:密码需要重新修改的天数:密码需要修改期限前的警告天数:密码过期后的账号宽限时间(密码失效日):保留
    
  • 目前加密机制

    [root@localhost ~]# authconfig --test | grep hashing
    password hashing algorithm is sha512
    

1.3 关于用户组:有效与初始用户组,groups,newgr

  • /etc/group文件结构

    [root@localhost ~]# head -n 4 /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    组名:用户组密码:GID:此用户组支持的账号名称
    
  • 有效用户组(effective group)与初始用户组(initial group)
    /etc/passwd第四栏的GID就是【初始用户组】,登录系统时即有该用户组的相关权限

    [root@localhost ~]# usermod -a -G users admin
    [root@localhost ~]# grep admin /etc/passwd /etc/group /etc/gshadow
    /etc/passwd:admin:x:1000:1000:admin:/home/admin:/bin/bash
    /etc/group:wheel:x:10:admin     <=次要用户组的设置:安装时指定
    /etc/group:users:x:100:admin    <=次要用户组的设置
    /etc/group:admin:x:1000:admin   <=初始用户组
    /etc/group:printadmin:x:994:
    /etc/gshadow:wheel:::admin      <=次要用户组的设置
    /etc/gshadow:users:::admin      <=次要用户组的设置
    /etc/gshadow:admin:!!::admin
    /etc/gshadow:printadmin:!::
    
    • groups:有效与支持用户组的观察
    [admin@localhost ~]$ groups
    admin wheel
    

    第一个输出的用户组即为有效用户组

    • newgrp:有效用户组的切换
    [root@localhost admin]# head -n 4 /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::
    组名:密码栏(开头为!表示无合法密码,所以无用户组管理员):用户组管理员的账号:有加入该用户组支持的所属账号
    

二、账号管理

2.1 新增与删除用户:useradd、相关配置文件、passwd、usermod、userdel

  • useradd

    useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明栏]  [-d 家目录绝对路径] [-s shell] 使用者账号名
    选项与参数:
    -m  :强制,要建立使用者家目录(一般账号默认值)
    -M  :强制,不要建立使用者家目录(系统账号默认值)
    
    # 完全参考默认值建立一个新用户
    [root@localhost admin]# useradd sino1
    [root@localhost admin]# ll -d /home/sino1/
    drwx------. 3 sino1 sino1 78 Nov 11 08:44 /home/sino1/
    # 默认建立使用者家目录,权限700
    [root@localhost admin]# grep sino1 /etc/passwd /etc/shadow /etc/    group
    /etc/passwd:sino1:x:1001:1001::/home/sino1:/bin/bash
    /etc/shadow:sino1:!!:19307:0:99999:7:::
    /etc/group:sino1:x:1001:
    

    由于/etc/shadow内仅会有密码参数而不会有加密过的密码数据,所以在建立用户时 还需要使用passwd 账号来设置密码,才算完成了用户建立的流程

    # 范例二:假设已存在用户组users,且UID 1500不存在,建立一个新用户
    [root@localhost admin]# useradd -u 1500 -g users sino2
    [root@localhost admin]# ll -d /home/sino2
    drwx------. 3 sino2 users 78 Nov 11 08:49 /home/sino2
    [root@localhost admin]# grep sino2 /etc/passwd /etc/shadow /etc/    group
    /etc/passwd:sino2:x:1500:100::/home/sino2:/bin/bash
    /etc/shadow:sino2:!!:19307:0:99999:7:::
    

    因为用户组已经存在,所以在/etc/group里面就不会主动建立与账号同名的用户组了

    # 建立一个系统账号
    [root@localhost admin]# useradd -r sino3
    [root@localhost admin]# ll -d /home/sino3
    ls: cannot access /home/sino3: No such file or directory    <=不    会主动建立家目录
    [root@localhost ~]# grep sino3 /etc/passwd /etc/shadow /etc/    group
    /etc/passwd:sino3:x:987:981::/home/sino3:/bin/bash
    /etc/shadow:sino3:!!:19307::::::
    /etc/group:sino3:x:981:
    
  • useradd参考文件

    [root@localhost ~]# useradd -D
    GROUP=100               <=默认的用户组
    HOME=/home              <=默认的家目录所在目录
    INACTIVE=-1             <=密码失效日,在shadow内的第七栏
    EXPIRE=                 <=账号失效日,在shadow内的第八栏
    SHELL=/bin/bash         <=默认的shell
    SKEL=/etc/skel          <=使用者家目录的内容数据参考目录
    CREATE_MAIL_SPOOL=yes   <=是否主动帮使用者建立邮箱(mailbox)
    
    • 私有用户组机制
    • 公共用户组机制
  • UID/GID密码参数:/etc/login.defs

  • 用户删除与密码设置值

    • 用户删除:userdel [-r] 用户名
      • -r表示连同家目录一起删除
    • 密码设置:passwd 用户名(只有paddwd代表修改自己的密码)
    • chage:显示详细的密码参数
  • usermod:修改账号相关设置

2.2 用户功能

  • id:查询某人或自己的相关UID/GID等信息
  • finger:查看很多用户相关的信息
  • chfn
  • chsh:change shell

2.3 新增与删除用户组

  • groupadd
    • 新建与用户私有用户组无关的其他组时,使用小于1000的GID
  • groupdel
  • gpasswd:建立用户组管理员

三、主机的详细权限规划:ACL的使用

使用外部身份认证系统需要进行相关学习与配置

暂时略过。

四、用户身份切换

4.1 su

su [-lm] [-c 命令] [username]
选项与参数:
-   :单纯使用,如【su -】代表使用login-shell的变量文件读取方式登录系统
-l  :与-类似,但后面加欲切换的使用者账号,也是login-shell方式
-m  :使用目前的环境配置,不读取新使用者的配置文件
-c  :仅进行一次命令,-c后可加命令

单纯使用【su】切换为root,读取的变量设置方式为非登录shell方式,很多原本的变量不会修改

【su】方式:
[admin@localhost ~]$ su
Password: 
[root@localhost admin]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost admin]# env | grep 'admin'
USER=admin
MAIL=/var/spool/mail/admin
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/admin/.local/bin:/home/admin/bin
PWD=/home/admin
LOGNAME=admin
XDG_DATA_DIRS=/home/admin/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
[root@localhost admin]# exit
exit

【su -】方式:
[admin@localhost ~]$ su -
Password: 
Last login: Sat Nov 12 07:54:01 CST 2022 on pts/0
[root@localhost ~]# env | grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XAUTHORITY=/root/.xauth2wQUfA
[root@localhost ~]# exit
logout

仅想执行一次命令,【su - -c "命令串"】

[admin@localhost ~]$ su - -c "head -n 3 /etc/shadow"
Password: 
root:$6$m/Uw7TAhFRyWJr.3$GTxC4qNEszBQ/QXNu0PT1ue3ubkxpZ2O0T.UM2rCud6MEKXb996fBTn10EkasOmv/H5E3HFWZrJPpdyzitXOt0::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
[admin@localhost ~]$    <= 身份依然是admin

root切换为任何用户时,不需要输入新用户的密码

[admin@localhost ~]$ su -l sino1
Password: 
[sino1@localhost ~]$ su -
Password: 
Last login: Sat Nov 12 08:00:26 CST 2022 on pts/0
[root@localhost ~]# id sshd
uid=74(sshd) gid=74(sshd) groups=74(sshd)
[root@localhost ~]# su -l sshd
This account is currently not available.
[root@localhost ~]# finger sshd
bash: finger: command not found...
[root@localhost ~]# exit
logout
[sino1@localhost ~]$ exit
logout
[admin@localhost ~]$ 

多人共用环境下,使用su,每个人都要知道root密码,有密码泄露的问题

4.2 sudo

并非所有人都能执行sudo,仅有规范到/etc/sudoers内的用户才能够执行,使用时仅需输入当前用户自己的密码

sudo [-b] [-u 新使用者账号]
选项与参数:
-b  :将后续的命令放到后台让系统自动执行,不与目前的shell参数影响
-u  :后面接欲切换的使用者,若无此项代表切换为root
[admin@localhost ~]$ sudo -u sshd touch /tmp/mysshd
[sudo] password for admin: 
[admin@localhost ~]$ ll /tmp/mysshd 
-rw-r--r--. 1 sshd sshd 0 Nov 12 08:09 /tmp/mysshd

4.3 visudo与/etc/sudoers

  • 单一用户可使用root所有命令,与sudoers文件语法

    执行visudo:
    ...
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    sino1   ALL=(ALL)       ALL
    ...
    
  • 利用wheel用户组以及免密码的功能处理visudo

    ...
    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    
    ## Same thing without a password
    # %wheel        ALL=(ALL)       NOPASSWD: ALL
    ...
    
  • 有限制的命令操作
    【!】代表不可执行

    myuser1     ALL=(root)      !/usr/bin/passwd, /user/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    
  • 通过别名创建visudo

    User_Alias ADMPW = pro1, pro2 ...
    Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /user/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    ADMPW   ALL=(root) ADMPWCOM
    
  • sudo的时间间隔问题

  • sudo搭配su的使用方式
    实现使用自己的密码切换为root身份,【sudo su -】

    [root@localhost ~]# visudo
    User_Alias ADMINS = pro1, pro2, pro3, myuser1
    ADMINS  ALL=(root)  /bin/su -
    

五、用户的特殊shell与PAM模块

5.1 特殊的shell,/sbin/nologin

编辑/etc/nologin.txt,说明不能登录的原因

5.2 PAM模块简介

Pluggable Authentication Modules,插入式验证模块

该模块可进行某些程序的验证,与PAM模块有关的配置文件位于/etc/pam.d/*及/etc/security/*

六、Linux主机上的用户信息传递

6.1 查询用户:w、who、last、lastlog

[admin@localhost ~]$ w
 08:56:37 up 1 day,  1:52,  2 users,  load average: 0.01, 0.05, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
admin    tty1                      02Nov22  9days  3:44   0.00s xinit /etc/X11/xinit/xinitrc -- /usr/bin/X :0 vt1 -keeptty -
admin    pts/0    :0               07:53    5.00s  0.07s  0.02s w
[admin@localhost ~]$ who
admin    tty1         2022-11-02 09:24
admin    pts/0        2022-11-12 07:53 (:0)
[admin@localhost ~]$ lastlog
Username         Port     From             Latest
root             pts/0                     Sat Nov 12 08:17:47 +0800 2022
bin                                        **Never logged in**
.....

6.2 用户对谈:write、mesg、wall

系统内在线用户即时通讯

6.3 用户邮箱:mail

脱机状态下使用mail发邮件

标签:bin,10,admin,用户组,ACL,etc,Linux,root,localhost
From: https://www.cnblogs.com/I-am-Sino/p/16882679.html

相关文章

  • WSL: Windows下的轻量linux系统
    WSL(WindowsSubsystemforLinux)是一个在Windows10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubun......
  • linux系统_腾讯云服务器_CentOS_搭建FTP
    A-搭建FTP服务器:1-安装ftp服务器:yum-yinstallvsftpd2-设置ftp开机启动:systemctlenablevsftpd.service3-启动ftp服务:systemctlstartvsftpd.service4-检......
  • GL-Suggesting a book 20221104
    TopicSuggestingabookWhichbookisbeingdescribed?Canyouthinkofanymoregenres?IsShakespeareyourfavoriteauthororisAgathaChristiemoreyour......
  • Linux安装JDK
    1、下载Linux版本的JDK(注意看自己安装的Linux系统是什么位数)查看本机位数命令:sudouname--mJDK官网下载地址:https://www.oracle.com/java/technologies/downloads/#jav......
  • python10
    一、创建并打开记录蚂蚁庄园动态的文件print("\n","="*10,"蚂蚁庄园动态","="*10)film=open('message.txt','w')print("\n即将显示……\n")  二、向蚂蚁庄园的动态文......
  • GL-Planning a trip 20221103 same
    Planningatrip20221103Needtogetawayfromitall?Planyourdreamvacationwithyourclassmates,Whowouldyouliketogoonholidaywith?这节课有人吗?I......
  • GL-Planning a trip 20221103
    Planningatrip这节课有人吗?Idon'thaveajobatpresentIhavebeenworkingfor5yearsmyhobbiesareplayvideogamesandlong-diatancerunning.Youwina......
  • Linux基础——根目录扩容
    1、准备扩容/dev/mapper/centos-root[root@ceph-admin~]#df-ThFilesystem              Type      Size  UsedAvailUse%Mountedondevtmpf......
  • Linux基础——内核排查过程
    根因:(内核BUG)BUG:unabletohandlekernelNULLpointerdereferenceat0000000000000019,代码调用函数assign_irq_vector报错,通过升级内核版本进行修复。解决办法:  ......
  • Linux安装php-vld扩展
     安装查看opcode利器vld,记录一下开发机安装php-vld过程。一、准备工作  Linux开发机一台;  Nginx、PHP已安装。二、安装phpvld扩展2.1、下载文件下载:​​http://p......