• LINUX 用户和组操作


    目录

    一、用户和组的分类

    1、用户分类

    2、组的分类

    3、用户和组的配置文件

    二、用户管理

    1、添加用户

    2、修改用户信息

    3、修改用户密码

    4、用户间切换

    5、删除用户账号

    6、sudo命令提高普通用户权限

    三、用户组管理

    1、创建用户组

    2、修改用户组的属性

    3、添加/删除组成员

    4、删除组账号

    四、查询用户和用户组信息

    1、查看用户信息

    2、查看用户组信息

    五、文件系统权限

    1、文件一般权限

    2、文件和目录的特殊权限

    1)、SUID

    2)、SGID

    3)、STICKY

    3、ACL权限

    1)设置ACL权限

    2)查看ACL权限

    六、权限掩码umask

    1、设置新建文件或目录的默认权限

    2、查看、修改用户当前默认的umask值


    一、用户和组的分类

    1、用户分类

    1)超级用户:用户名为root,它具备一切权限,只有进行系统维护情形下才会使用超级用户登录,以避免系统出现安全问题。

    2)系统用户(伪用户):是LINUX系统正常工作所必须的用户。主要是为了满足相应的系统进程对文件属主的要求而建立,如:bin、adm等,系统用户不能用来登录。

    3)普通用户:是为了让用户能够使用LINUX系统资源而建立的,我们大多数用户都属于此类。

    2、组的分类

    1)基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个就是基本组。

    2)附加组(公有组):可以容纳很多用户,组中的用户都具有所拥有的权力。

    3、用户和组的配置文件

    文件名称文件功能
    /etc/passwd用户账号文件
    /etc/shadow用户密码文件
    /etc/group用户组账号文件
    /etc/gshadow用户组密码文件

    1)用户账号文件--/etc/passwd是一个文本文件,用于定义系统的用户账号,由于所有用户都对passwd有读的权限,所以该文件只定义用户账号,而不保存密码。

    root:x:0:0:root:/root:/bin/bash--该字段由七个部分组成,之间用“ : ”分隔格,格式如下

    账号名称:密码:UID:GID:个人资料:主目录:Shell

    2)用户密码文件--/etc/shadow

    root:$y$j9T$LWZDwBAhVGg23pv037HHT.$7olHQP6h/q3Oendv1MZW9MrbGkZYUrboA9j0vkMF/j6:19608:0:99999:7::: ---该字段也是用" : "分隔,格式如下

    登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

    3)用户组账号文件---/etc/group

    root:x:0:---该字段用" : ”分隔,格式如下

    组名:组的加密口令:GID:Userlist

    二、用户管理

    1、添加用户

    基本语法

    useradd [选项] 用户名

    常用选项:

    -c :注释信息

    -d :设定用户的家目录

    -e :设置用户的失效时间,格式YYYY-MM-DD

    -f :指定密码到期后多少天账号被禁用,若为0,指定账号到期立即禁用,若为-1,指账号过期后永不禁用。

    -g :指定组名,该组名是存在的

    -G :为用户指定所属的附加组,若指定多个附加组,可以用逗号分隔

    -M :不创建用户家目录

    -N :不创建与用户同名的基本组

    -p :只等用户的登录密码

    -u :设置用户的UID,若不指定默认在最大用户的UID+1,如果同时有-o选项可以重复使用其他用户的标识

    -s :指定用户登陆后使用的SHELL,若不指定,默认为bash

    如:创建一个用户为zhangsan,密码为123456,账号永不过期,其他默认。

    1. [root@node1 ~]# useradd zhangsan -p 123456 -e -1
    2. [root@node1 ~]# tail -1 /etc/shadow
    3. zhangsan:123456:19611:0:99999:7:::

    2、修改用户信息

    基本语法

    usermod [选项] 用户名

    常用选项

    可以用创建用户的选项,功能一样

    -L :锁定(暂停)用户账户,使其不能登录使用。

    -U :解锁用户账户

    -l :修改原账户名的名字,必须在该用户未登录的情况下使用

    例如:修改用户zhangsan的UID为1010,用户名修改为lisi。

    1. #修改前先进行查看
    2. [root@node1 ~]# tail -1 /etc/passwd
    3. zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
    4. #进行修改
    5. [root@node1 ~]# usermod zhangsan -u 1010 -l lisi
    6. #修改后进行查看
    7. [root@node1 ~]# tail -1 /etc/passwd
    8. lisi:x:1010:1002::/home/zhangsan:/bin/bash

    3、修改用户密码

    基本语法

    passwd [选项] 用户名

    常用选项:

    -e、-i、-l和上面的一样使用

    -d :清空指定用户的密码

    -x :指定用户密码的最长使用期限

    例如:修改lisi用户的密码为654321

    1. #修改前进行查看
    2. [root@node1 ~]# tail -1 /etc/shadow
    3. lisi:123456:19611:0:99999:7:::
    4. #进行修改
    5. [root@node1 ~]# passwd lisi
    6. Changing password for user lisi.
    7. New password: #LINUX系统是密文输入,看不见,正常输入即可
    8. BAD PASSWORD: The password is shorter than 8 characters
    9. Retype new password: #LINUX系统是密文输入,看不见,正常输入即可
    10. passwd: all authentication tokens updated successfully.
    11. #修改后,进行查看你
    12. [root@node1 ~]# tail -1 /etc/shadow
    13. lisi:$y$j9T$3LAdu8d8IoA8bMXdHm11P/$9cRRCnV8M66KYvQqiY1wGEQNsOVvfTMqy0JAjWqpQbC:19611:0:99999:7:::

    注:另一种脚本修改密码的方法

    echo 密码 | passwd --stdin 用户名

    4、用户间切换

    基本语法

    su 用户名

    从root用户切换到任何用户不需要密码验证,而普通用户道root或者到其他用户需要输入密码进行验证后才可以切换。

    su和su -命令的区别----加载配置文件不一样

    su切换方式加载的文件:~/.bashrc 、/etc/bashrc

    su -切换方式加载文件:/etc/bashrc、/etc/profile、~/.bashrc、~/.bash_profile

    例如:

    1. [root@node1 ~]# su lisi ---root用户到普通用户lisi
    2. [lisi@node1 root]$ su root ---从普通用户到root
    3. Password: ---需要输入密码才能切换
    4. [root@node1 ~]#
    5. #在使用过程中,不要用户套用户,登录一个用户应该退出再切换到其他用户
    6. [root@node1 ~]# exit
    7. exit
    8. [lisi@node1 root]$ exit
    9. exit
    10. [root@node1 ~]#

    5、删除用户账号

    基本语法

    userdel [-r] 账户名

    选项  -r  在删除该用户的同时,一并删除该用户对应的主目录。

    例如:删除lisi用户

    1. #删除前进行查看该文件最后一条用户是lisi
    2. [root@node1 ~]# tail -1 /etc/passwd
    3. lisi:x:1010:1002::/home/zhangsan:/bin/bash
    4. #执行删除lisi用户的命令
    5. [root@node1 ~]# userdel -r lisi
    6. #删除后进行查看该文件的最后一条用户不是lisi了,说明已经删除
    7. [root@node1 ~]# tail -1 /etc/passwd
    8. dhcpd:x:177:177:DHCP server:/:/sbin/nologin

    6、sudo命令提高普通用户权限

    使用该命令,需要通过root用户在用户配置文件/etc/sudoers文件配置才可以使用

    sodo的执行流程:

    默认只有root才有该权限,当用户执行sudo时,便会让用户输入自己的密码进行确认,root用户不需要输入密码。若想要切换的身份执行相同的权限,也需要输入密码,若密码输入不成功,系统会去系统/etc/sudoers文件中查找该用户是否执行sudo的权限。若用户具有执行sudo的权限,便会开始执行sudo后续接的命令。格式:sudo  + 其他要执行的命令。

    配置/etc/sudoers文件

    vim /etc/sudoers  找到文件第100行这个位置,都修改为ALL。

     root  ALL=(ALL)   ALL

    参数含义:root用户账号,第一个ALL登录者的来源主机,第二个ALL可以切换的身份,第三个ALL可执行的命令。

    ALL关键字,代表任何身份、主机、命令。

    三、用户组管理

    1、创建用户组

    基本命令

    groupadd [选项] 用户组名

    常用选项:

    -g :指定用户组名的GID(组ID)

    -r :建立一个系统组账号,与-g不能同时使用,则分配一个1~999的GID

    例如:创建一个group1组名的新组

    1. [root@node1 ~]# tail -1 /etc/group
    2. group1:x:977:

    2、修改用户组的属性

    基本语法

    groupmod [选项]  用户组名

    常用选项:

    -g :指定用户组的新GID

    -n :将组的名字修改为新名字

    3、添加/删除组成员

    基本语法

    gpasswd [选项] [用户] [组]

    只有root用户和组管理员才能使用该命令。

    常用选项:

    -r :删除组密码

    -a :把用户加入组

    -d :把用户从组中删除

    -M :可以添加多个用户

    -A :给组指派管理员

    例如:将zhangsan用户添加至group1。

    1. #先创建一个用户zhangsan
    2. [root@node1 ~]# useradd zhangsan -p 123456
    3. #将用户zhangsan添加至group1用户组
    4. [root@node1 ~]# gpasswd -a zhangsan group1
    5. Adding user zhangsan to group group1
    6. #添加后进行查看
    7. [root@node1 ~]# tail -2 /etc/group | head -1
    8. group1:x:977:zhangsan

     4、删除组账号

    基本语法

    groupdel 用户组名

    四、查询用户和用户组信息

    1、查看用户信息

    id 用户名

    2、查看用户组信息

    groups 用户组名

    例如:

    1. #查看zhangsan用户信息
    2. [root@node1 ~]# id zhangsan
    3. uid=1002(zhangsan) gid=1002(zhangsan) groups=1002(zhangsan),977(group1)
    4. #查看zhangsan用户组信息
    5. [root@node1 ~]# groups zhangsan
    6. zhangsan : zhangsan group1

    3、查看用户登录情况

    1)users---查看当前登录系统的用户

    1. [root@node1 ~]# users
    2. root root

    2)last  -n---查看你最近登录用户情况

    1. [root@node1 ~]# last -10
    2. root pts/1 192.168.78.1 Mon Sep 11 18:09 still logged in
    3. root pts/0 192.168.78.1 Mon Sep 11 16:10 still logged in
    4. reboot system boot 5.14.0-162.6.1.e Mon Sep 11 15:58 still running
    5. root pts/1 192.168.78.1 Sun Sep 10 15:50 - crash (1+00:08)
    6. root pts/0 192.168.78.1 Sun Sep 10 15:42 - 18:17 (02:35)
    7. reboot system boot 5.14.0-162.6.1.e Sun Sep 10 15:40 still running
    8. root pts/0 192.168.78.1 Sat Sep 9 16:19 - crash (23:21)
    9. reboot system boot 5.14.0-162.6.1.e Sat Sep 9 16:17 still running
    10. root pts/0 192.168.78.1 Fri Sep 8 09:56 - crash (1+06:21)

    3)lastlog---查看每个账户最近登录时间

    1. [root@node1 ~]# lastlog
    2. Username Port From Latest
    3. root pts/1 192.168.78.1 Mon Sep 11 18:09:02 +0800 2023
    4. bin **Never logged in**
    5. daemon **Never logged in**
    6. adm **Never logged in**
    7. lp **Never logged in**
    8. sync **Never logged in**
    9. shutdown **Never logged in**
    10. halt **Never logged in**
    11. mail **Never logged in**
    12. operator **Never logged in**

    4)w---显示登录到系统的用户信息

    1. [root@node1 ~]# w
    2. 18:31:55 up 2:33, 2 users, load average: 0.00, 0.00, 0.00
    3. USER TTY LOGIN@ IDLE JCPU PCPU WHAT
    4. root pts/0 16:10 1.00s 3.15s 0.02s w
    5. root pts/1 18:09 22:53 0.02s 0.02s -bash

    五、文件系统权限

    1、文件一般权限

    1)文件权限三类对象:owner所属主,简写u;group所属组,简写g;other其他,简写o。

    2)文件的三种主要权限:r----read读;w----writh写;x----execute执行。

    注:root用户不受文件权限的的读写限制,执行权限受限制。

    3)一般权限说明

    4)修改文件或目录权限

    基本语法

    1. chmod [选项] [ugoa] [+|-|=] [rwx] 文件或目录名 ---字符型修改方式
    2. chmod [选项] [ugoa] nnn 文件或目录名 ---数值型修改n代表数字

    常用选项:-R --- 递归修改该目录下所有的文件或者子目录的权限。

    ugoa:针对不同用户的级别选择  a代表所有用户即 a=u+g+o。

    =或-或=:表示设置权限的动作,+增加某个权限,-取消某个权限,=赋予某个权限,并覆原来的权限。

    rwx:用字符组合设置权限。

    nnn:用三个八进制数字来表示的权限。

    注:字符和数字不能混合使用添加或取消权限

    5)对于文件和目录 rwx有着不同的作用

    6)文件和目录可能出现的权限

    例如,修改a.txt文件所属主为可读、可写、可执行,所属者为可读、可写、不可执行,其他用户可读,不可写、不可执行。

    1. #修改前查看权限
    2. [root@node1 test]# ll
    3. total 0
    4. -rw-r--r--. 1 root root 0 Sep 11 19:42 a.txt
    5. #进行修改
    6. [root@node1 test]# chmod 764 a.txt
    7. #修改后进行查看权限
    8. [root@node1 test]# ll
    9. total 0
    10. -rwxrw-r--. 1 root root 0 Sep 11 19:42 a.txt

    7)修改文件或目录的属主和属组

    修改文件或目录的所属者

    基本语法

    chown [选项]  新属主[:[新属组]] 文件或目录

    选项-R ----可以递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。 

    修改文件或者目录的属主

    基本语法

    1. chown [选项] :新属组 文件或目录
    2. chgrp [选项] 新属组 文件或目录

    2、文件和目录的特殊权限

    三种特殊权限:SET UID(SUID)、SET GID(SGID)、StickyBit(粘滞位),用于对文件或目录进行灵活方便的控制。

    1)、SUID

    授予该权限,表示任何用户执行该可执行程序,生成的进程的所有者不是进程的发起者,而是可执行程序的所有者,标识为 s。

    基本语法

    chmod u+s 文件或目录名
    2)、SGID

    对目录授予该权限,则在目录中创建的所有文件的所属组都为该目录的所属组,而不是用户所属组 标识为 s。

    基本语法

    chmod g+s 文件或目录目录名
    3)、STICKY

    对目录设置该权限,则该目录中所有的文件只有创建者可以修改删除,标识为 t。

    基本语法

    chomd o+t 文件或目录名

    注:授予特殊权限时,该目录或文件需要有x普通权限才会达到对应的效果。

    3、ACL权限

    给指定的用户指定目录分配指定的权限。

    1)设置ACL权限

    基本语法

    setfacl [选项] 文件或目录

    常用选项:

    -m :设定ACL权限(必选项),例如给一个用户ACL权限,则使用 u:用户名:权限 格式;如果给一个组ACL权限,则使用 g:组名:权限 格式;

    -x :删除指定的ACL权限

    -b :删除所有的ACL权限

    -d :设定默认ACL权限。只对目录生效,指目录中新建的文件拥有此默认权限

    -k :删除默认ACL权限

    -R :递归设定ACL权限,指设定的ACL权限会对目录下的所有子文件生效

    2)查看ACL权限

    基本语法

    getacl 文件名或目录名

    例如:所有者root用户在根目录下创建一个文件目录/file,然后创建一个QQ所属组,所属组里面创建两个用户xiaoming和xiaohong。此文件权限770,然后新加入一个用户xiaoqiang,给他设定/file目录的ACL为r-x。

    1. [root@node1 test]# mkdir /file
    2. [root@node1 test]# useradd xiaohong
    3. [root@node1 test]# useradd xiaoming
    4. [root@node1 test]# groupadd QQ
    5. [root@node1 test]# gpasswd -M xiaohong,xiaoming QQ
    6. [root@node1 test]# chown root:QQ /file/
    7. [root@node1 test]# chown 770 /file/
    8. [root@node1 test]# ll -d /file/
    9. drwxrwxrwx. 2 770 QQ 6 Sep 11 21:57 /file/

    目录/file的所有者和所属组其他人权限设定为770,接下来我们创建旁听用户xiaoqiang,并赋予ACL权限r-x。

    1. [root@node1 test]# useradd xiaoqiang
    2. [root@node1 test]# setfacl -m u:xiaoqiang:rx /file/
    3. [root@node1 test]# ll -d /file/
    4. drwxrwxrwx+ 2 770 QQ 6 Sep 11 21:57 /file/
    5. [root@node1 test]# getfacl /file
    6. getfacl: Removing leading '/' from absolute path names
    7. # file: file
    8. # owner: 770
    9. # group: QQ
    10. user::rwx
    11. user:xiaoqiang:r-x
    12. group::rwx
    13. mask::rwx
    14. other::rwx

    现在切换到xiaoqiang用户对于/file目录没有写权限,进入/file目录,在此目录创建文件看能否成功。

    1. [root@node1 test]# su xiaoqiang
    2. [xiaoqiang@node1 test]$ cd /file/
    3. [xiaoqiang@node1 file]$ touch a.txt
    4. touch: cannot touch 'a.txt': Permission denied

    六、权限掩码umask

    1、设置新建文件或目录的默认权限

    在LINUX系统中,当用户创建一个新的文件或者目录时,系统都会为新建的目录或文件分配默认的权限,该默认的权限与UMASK值有关,具体关系如下

    新建文件的默认权限=0666-umask值

    新建目录的默认权限=0777-umask值

    2、查看、修改用户当前默认的umask值

    1. 查看当前用户的umask权限
    2. [root@node1 test]# umask
    3. 0022
    4. #修改umask值
    5. #1、临时修改
    6. [root@node1 test]# umask 000
    7. [root@node1 test]# umask
    8. 0000
    9. [root@node1 test]# touch b.txt
    10. [root@node1 test]# mkdir file
    11. [root@node1 test]# ll
    12. total 0
    13. -rwxrw-r--. 1 root root 0 Sep 11 19:42 a.txt
    14. -rw-rw-rw-. 1 root root 0 Sep 11 21:24 b.txt
    15. drwxrwxrwx. 2 root root 6 Sep 11 21:24 file
    16. #2、永久修改
    17. [root@node1 test]# vim /etc/profile
    18. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    19. umask 002
    20. else
    21. umask 022
    22. fi
    23. [root@node1 test]# source /etc/profile //立即在当前shell中生效
  • 相关阅读:
    UE5笔记【八】导入FBX网格和和材质到UE5
    JUCE框架教程(3)—— Component Class&Graphics入门
    es之null_value
    简单易上手,亚马逊云科技Amazon CodeWhisperer个性化辅助功能成为开发者好帮手
    36 - 新的 Promise 方法:allSettled & any & race
    npm报错sass
    Windows安装Git
    【1106】记录
    服务器常用的异常及性能排查
    Selenium WebUI 自动化测试框架
  • 原文地址:https://blog.csdn.net/weixin_65685029/article/details/132811334