玩转Linux必备知识(三)

玩转Linux必备知识(一)
玩转Linux必备知识(二)

用户管理系统

用户管理基础

  • who 查看系统中当前登录的所有用户

  • who am i 查看当前登录用户

  • 终端:

    :0 代表后台终端,与人没有交互的

    pts/n n为任意正整数,虚拟终端(图形化界面中的命令行,远程登录使用的命令行均为虚拟终端),哪怕是编号相同的两个终端,只要不是连续使用的,中间曾经关闭过,就不是同一个终端了

    tty1-63 物理终端,本地服务器操作使用物理终端
    ttys0-3 物理终端,使用串行通信进行操作的终端

  • 用户信息的存放文件

    /etc/passwd
    /etc/shadow

    /etc/passwd 存放系统中所有的用户的信息,在该文件中,每一行代表一个用户,包含用户的一下信息

    username:password-reserved:uid:gid:remarks:home-dir:shell

    ​ 密码:这里是密码保留位,不保存密码,没有意义
    uid:用户编号,系统识别用户的唯一根据。uid=0 则为超级管理员用户。uid小于1000的是系统用户,用来承担系统中的运行工作。uid>=1000的为普通用户
    gid:用户组编号,系统唯一识别用户组的根据。

    ​ 注释:系统管理员给用户留下的注释信息,方便后来的管理员理解用户的作用
    用户家目录:用户的个人目录,保存用户的个人文件以及配置信息
    shell:一种负责人机交互的软件。可以在系统中/etc/shells文件中查看当前系统所支持的shell种类。RHEL7支持的shell:
    /bin/sh 最古老的shell
    /bin/bash 目前应用最多的shell
    /sbin/nologin 使用户无法登陆的shell

用户管理命令

  • useradd 选项 参数 用户名 创建对应的用户

    选项:
    -u 创建用户时指定用户的uid,如果不指定,则默认为上一个用户的uid+1
    -g 创建用户时将用户加入gid所指定的用户组(该用户组必须已经存在),如果不指定,则默认uid=gid,在创建用户时,会创建与用户同名的用户组。
    -s 创建用户时指定用户使用的shell,若不指定,默认为/bin/bash
    -d 创建用户时指定用户的家目录位置,若不指定,则自动在/home目录下创建于用户名相同目录名的目录作为家目录

  • passwd 修改密码的命令

    root用户使用时:passwd 用户名 修改指定用户的密码(root用户可以修改系统中任意一个用户的密码);普通用户使用时:passwd 修改自己的密码(普通用户只能修改自己的密码);对于可登录的用户来说,密码是必备的

  • id 用户名 查看用户的信息

  • usermod 选项 参数 用户名

    -u 修改用户的uid(一般不使用)
    -g 修改用户的gid
    -s 修改用户使用的shell
    -d 修改用户的家目录

    例子:
    usermod -g 0 student 将student用户的用户组更改为root用户组(root用户组gid=0)

  • userdel -r 用户名 删除用户的同时删除家目录

    ​ 或者:find / -user 用户名 -exec rm -rf {} \;

用户切换命令

su    临时切换用户的命令
su   用户名        临时切换用户
su  -   用户名     临时切换用户,同时切换家目录

注意:
1、root用户使用su命令时,无需提供密码,其他用户均需提供要切换的用户的密码才能切换
2、切换用户时,如果没有输入密码的步骤,则用户的远程权限(远程文件共享等)不发生切换
3、临时切换使用完后,可以使用exit命令退出切换。如果不是需要,不要在su命令切换的用户内再次使用su命令

sudo 临时获取root用户身份执行命令
sudo 要执行的命令
例子:普通用户下
sudo passwd root

系统中哪些用户能够使用sudo命令,在/etc/sudoers文件中进行配置,正常情况下,系统默认设置wheel用户组的成员全部可以使用sudo命令

用户组管理命令

​ 主组:用户拥有主组的权限,用户一般使用主组的身份进行操作,一个用户只能拥有一个主组
从属组(附属组,副组):也同时拥有从属组的所有权限,用户拥有的从属组没有上限

​ 用户组的信息的存放位置: /etc/group 保存用户组信息;/etc/gshadow 保存用户组密码(从不使用)

/etc/group 文件内容:文件中每一行代表一个用户组的信息,格式为:用户组名:密码:gid:所属用户。注意:所属用户位置保存的是将该用户组设置为附属组的所有用户的名字

  • groupadd group-name 创建用户组

    groupadd -g gid group-name 创建用户组时指定gid

  • groupmod -g gid group-name 修改用户组的gid

  • groupdel group-name 删除用户组

    与从属组相关的命令:
    useradd   -G   用户组名或gid    用户名       创建用户时指定从属组
    
    usermod   -G   用户组名或gid    用户名       重新设置从属组
    usermod   -aG   用户组名或gid    用户名      添加一个从属组

权限管理基础

  • ls -l path 查看文件详细信息(包含权限信息)

    dr-xr-xr-x.即使用十一位二进制数字表示权限

    第一位:表示文件类型

    • 普通文件
      d 目录
      l 链接文件
      b 块设备文件
      s 套接字文件
      第二位到第四位:表示文件所属人对于文件的权限
      依次为读(r)写(w)执行(x)
      第五位到第七位:表示文件所属组对于文件的权限
      第八位到第十位:表示系统中除文件所属人所属组之外的其他用户对于文件的权限
      第十一位:代表是否具有访问控制列表(acl)如果没有,则为‘.’ 如果有,则为‘+’

对于文件:
读(r)权限:代表是否能够查看文件内容
写(w)权限:代表是否能够对文件内容进行修改
执行(x)权限:代表是否为一个可执行文件(应用程序)

对于目录:
读(r)权限:代表是否能够查看到目录中有哪些内容
写(w)权限:代表是否能够对目录中内容进行修改(在目录中新建文件、修改目录中内容的信息、对目录中的文件或目录进行编辑)
执行(x)权限:代表是否能够进入目录

注意:对于目录来说,读权限和执行权限是缺一不可的,两者少一个,则没有任何意义;写权限也与执行权限相关。对于目录来说,执行权限是最基本权限,如果没有执行权限,其他权限没有意义


权限管理命令

  • chown

    chown 用户名:用户组名 路径 同时修改所属人所属组
    chown 用户名 路径 仅修改所属人
    chown :用户组名 路径 仅修改所属组

  • chgrp 用户组名 路径 修改所属组

  • chmod 权限表达式 路径 修改权限


字母法:
u:代表所属人
g:代表所属组
o:代表其他人
a:代表所有人

+:代表添加权限
-:代表移除权限

r:代表读权限
w:代表写权限
x:代表执行权限
例子:
u+r 所属人具有读权限
o-x 其他人不具备执行权限
a-r 所有人均不具备读权限


数字法:
r=4
w=2
x=1
每三位用一个数字表示,该数字大小为三位权限的代数和
例子:
rw-r–r– >> 644
354 >> -wxr-xr–

文件的最大权限为:666
目录的最大权限为:777


文件访问控制列表(facl)

作用:针对单个用户的权限进行限制

  • getfacl path 查看文件的访问控制列表

  • setfacl -m user:username:permission-expr path 设置访问控制列表

    例子:
    setfacl -m user:student:r– /bin/passwd

    注意:
    1、facl对root用户及文件所属人无效
    2、facl设置后,会对ls -l 命令查看到的内容产生影响,使显示不准确,所以说设置facl以后,详细的权限内容,以facl中显示的为准;隐藏权限attr 是唯一可以限制root用户的权限,不推荐使用。

特殊权限

  suid :仅对应用程序设置有效,设置后,无论系统中哪个用户执行该程序,都会以程序所属人的身份执行。该权限设置后,会占用所属人权限的执行权位,并显示为‘s’。如果所属人本身没有执行权,则显示为‘S’。注意:普通用户想要执行具有suid设置的程序,必须本身对该程序具有执行权,且程序所有人也对该程序具有执行权

  sgid : 仅对目录设置有效,对目录设置后,该目录中新建的所有内容所属组及组权限均与该目录相同

  sbit : 粘滞键,仅对目录设置有效,对目录设置后,目录中的子目录的内容,只有目录的所属人以及子目录的所属人有权限修改

​ 设置特殊权限:
suid=4
sgid=2
sbit=1

​ 三种特殊权限占用一位数字,写在普通权限的前面
例子:chmod 2770 path 对对应的目录设置sgid

猜你喜欢

转载自blog.csdn.net/jeffery0207/article/details/80637847