Linux用户与权限管理

Linux用户与权限管理

用户

Linux是一个多用户的操作系统,在Linux中,理论上来说,我们可以创建无数个用户,但这些用户是被划分到不同的群组里面的,有一个特殊的用户root,是超级用户,拥有最高权限。

自己创建的用户权限是有限的,这大大提高了Linux系统的安全性,能够有效防止误操作或是病毒攻击,当我们执行某些需要更高权限的命令是可以使用sudo命令来提升权限(前提是该用户在/etc/sudoers文件中被分配了该权限)。与用户相关的常用命令有:

  1. sudo以root的身份运行命令

    sudo visudo
    
  2. useraddadduser

    useradd testuser  #创建一个名为testuser的用户
    adduser testuser  #创建一个名为testuser的用户
    

    这两个命令都可以创建新用户,且会在/home目录下生成相同名字的家目录,此命令需要root权限。

  3. passwd

    passwd testuser  #修改testuser用户的密码
    

    修改用户的密码,当我们创建完用户之后,该用户是没有密码的,这显然是不安全的,因此作为root用户,我们可以为任何用户创建和修改密码,但作为普通用户,我们只能用passwd来修改自己的密码。

  4. userdel

    userdel testuser #只删除用户,但不会从/home中删除对应文件夹
    userdel -r testuser  #删除用户的同时删除/home下对应的文件夹
    
  5. usermod

    usermod testuser -l testuser_new
    #将testuser的用户名修改为testuser_new,但/home下的家目录名称不会改变,需要自己手动进行修改,用userdel -r testuser_new删除用户时无论家目录名字是否修改都会被一并删除
    usermod testuser -g testgrp
    #将testuser所属的群组修改为testgrp
    usermod testuser -G testgrp,foo,bar
    #将testuser一次性添加到多个群组中
    usermod testuser -ag testgrp
    #将testuser添加到testgrp中,但同时不离开自己原来的群组
    

    -g-G选项会让用户离开原来的群组,如果你不想这样做的话,就得再添加-a参数,意味着append。

群组的管理

Linux中每个用户都属于一个特定的群组,如果你不设置用户的群组,默认会创建一个和它的用户名一样的群组,并把用户划归到这个群组中。与群组相关的常用命令有:

  1. groupadd

    groupadd testgrp  #创建一个新的群组,用法和useradd类似
    
  2. groupdel

    groupdel testgrp  #删除一个已存在的群组
    
  3. groups

    groups testuser  #查看testuser用户所在的群组
    
  4. usermod -gusermode -G

    修改用户的群组,在用户部分已经有过介绍

  5. chgrp

    chgrp bar file.txt  #将file.txt文件的群组修改为bar
    

    修改文件的群组

  6. chown

    chown testuser file.txt
    #将file.txt的所属权转让给testuser
    chown testuser:testgrp file.txt 
    #将file.txt所属的用户改为testuser,所属群组改为testgrp
    chown -R testuser /home/foo
    chown -R testuser:testgrp /home/foo
    #递归设置子目录和子文件,一同转让所有权
    

文件权限管理

说到文件权限管理,我们首先需要了解文件权限是什么。我们用ls -l命令查看一个目录时,可以得到这样的结果:

[root@x86c deviceQuery]# ls -l 
total 52
-rw-rw-r-- 1 test01 test01  1165 Sep 15  2022 A30.intro
-rwxr-xr-x 1 test01 test01  5044 Sep 15  2022 deviceQuery.cuf
-rwxrwxr-x 1 test01 test01 34464 Dec 14  2022 deviceQuery.out
-rwxr-xr-x 1 test01 test01   972 Sep 15  2022 Makefile
drwxr-xr-x 2 root   root       6 Feb 20 17:29 test

其中第一列所表示的就是文件或目录的权限,以最后一行的drwxr-xr-x为例:

  • d:表示目录,普通文件是-,链接是l
  • r:read,表示文件可读
  • w: write,表示文件可写,一般有写的权限,就有删除的权限
  • x: execute,表示文件可执行
  • -: 表示没有相应权限

权限的整体是按用户来划分的,如下图所示:

640

了解了这张图所说的内容之后,我们再来理解上面这句drwxr-xr-x的意思:

  • 它是一个文件夹
  • 它的所有者root用户具有读、写、执行的权限
  • root群组中的用户具有读、执行的权限,但无权对文件进行修改
  • 其他用户具有读、执行的权限,无权对文件进行修改

了解了文件权限的含义之后,我们就可以使用chmod来修改权限,chmod并不是需要root权限才能运行的,只要你是此文件的所有者,就可以用chmod来修改文件的访问权限。

chmod

  1. 用数字来分配权限
权限 数字
r 4
w 2
x 1

因此改变权限,只需要做一些简单的加法就行:

chmod 640 hello.c 

# 分析
6 = 4 + 2 + 0 表示所有者具有 rw 权限
4 = 4 + 0 + 0 表示群组用户具有 r 权限
0 = 0 + 0 + 0 表示其它用户没有权限

对应文字权限为:-rw-r-----
  1. 用字母来分配权限

    • u:user的缩写,表示所有者
    • g: group的缩写,表示群组用户
    • o: other的缩写,表示其他用户
    • a:all的缩写,表示所有用户
    • +:加号,表示添加权限
    • -: 减号,表示去除权限
    • =: 等于号,表示分配权限
    chmod u+rx file # 文件file的所有者增加读和运行的权限
    chmod g+r file # 文件file的群组用户增加读的权限
    chmod o-r file # 文件file的其它用户移除读的权限
    chmod g+r o-r file # 文件file的群组用户增加读的权限,其它用户移除读的权限
    chmod go-r file # 文件file的群组和其他用户移除读的权限
    chmod +x file # 文件file的所有用户增加运行的权限
    chmod a+rwx file #给所有用户增加file文件的读写执行权,当然这是危险的
    chmod u=rwx,g=r,o=- file # 文件file的所有者分配读写和执行的权限,群组其它用户分配读的权限,其他用户没有任何权限
    
posted @ 2023-02-21 10:04  yukina~  阅读(163)  评论(0编辑  收藏  举报