Linux-用户-组-权限-shell

一、用户和组

  • id 【username】 :查看当前用户的信息,包括uid,gid
  • usermod 【选项】【参数】:修改用户账户信息
    (1):-a(append)把用户追加到某些组中,仅与-G选项一起使用
    (2): -c(comment )修改/etc/passwd文件第五段comment
    (3):-d(home)修改用户的家目录通常和-m选项一起使用
    (4):-e(expiredate )指定用户帐号禁用的日期,格式YY-MM-DD
    (5):-f (inactive )用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
    (6):-g(gid)修改用户的gid,改组一定存在
    (7):-G(groups)把用户追加到某些组中,仅与-a选项一起使用
    (8):-l(login)修改用户的登录名称
    (9): -L(lock )锁定用户的密码
    (11):-m(move-home)修改用户的家目录通常和-d选项一起使用
    (12):-s(shell )修改用户的shell
    (13):-u(uid)修改用户的uid,该uid必须唯一
    (14):-U(unlock)解锁用户的密码

将用户admin追加至组test1中
在这里插入图片描述

  • groupadd 【选项】【参数】添加新组
    (1)-f(force)如果组已经存在则成功退出,并且如果 GID 已经存在则取消 -g
    (2)-g(gid )GID 为新组使用 GID
    (3)-h(help)显示此帮助信息并推出
    (5)-K(key) KEY=VALUE 不使用 /etc/login.defs 中的默认值
    (6)-o(non)-unique 允许创建有重复 GID 的组
    (7)-p(password)PASSWORD 为新组使用此加密过的密码
    (8)-r(system)创建一个系统账户
    (9)-R(root)CHROOT_DIR chroot 到的目录

新建组gid为1002的组test2
在这里插入图片描述

  • gpasswd 【选项】【参数】管理工作组
    (1)-a:添加用户到组
    (2)-d: 从组删除用户
    (3)-A:指定管理员
    (4)-M:指定组成员和-A的用途差不多;
    (5)-r:删除密码;
    (6)-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

从test1组中删除admin用户,或者说将用户admin从test1组中删除
在这里插入图片描述

二、文件权限及关键文件字段含义

1、文件权限

  • 文件的权限分为三类 :文件的用有人、文件的拥有组、文件的其他人操作权限。
    在这里插入图片描述
  • 通过ls -l命令可以查看文件的详细内容:
    (1)第一位为-(横杠)表示当前查看到的内容是一个文件,为d表示为文件夹。
    (2)后面三位为一组,共三组,分别表示拥有人、拥有组、其他人。
    (3)r:read w:write x:excute
    (4)最后面有一个.(点)出现,有的也可以显示为+(加号)号,这里表示该文件是否还有其他权限,点表示当前文件只有当前显示的权限,如果显示为加号表示该文件还有其他隐藏权限。
    (5)后面存在一个数字,该数字表示链接数,如果是文件则为1,如果是文件夹,则至少为2,显示该文件夹当中有多少个文件。(在后续版本才加进入的一个选项)
    (6)每个文件都会有其拥有人,有其拥有组。
    (7)显示文件大小,默认以Byte为单位进行显示,可通过-h修改显示单位。
    (8)显示当前文件的最后修改时间。
    (9)显示文件或文件夹的名字。
  • 对于文件夹的权限来说:
    (1)如果有r权限,则可以查看该文件夹当中的内容。
    (2)如果有x权限,则可以进入该文件夹,但查看不到文件夹里面的内容。
    (3)如果有w权限,则可以对该文件夹里面的文件实现添加和删除动作,对于文件夹当中文件的添加和删除操作,不取决于文件本身的权限,而是取决于该文件上一级目录的权限。
    权限只作用于当前这一级,不存在递进关系。
    文件的权限修改
  • chown 【选项】【所有者】【所有组】【文件名】修改文件的拥有人(拥有组也可修改)
    (1)-c 显示更改的部分的信息
    (2)-f 忽略错误信息
    (3)-h 修复符号链接
    (4)-R 处理指定目录以及其子目录下的所有文件
    (5)-v 显示详细的处理信息
    (6)-deference 作用于符号链接的指向,而不是链接文件本身
    在这里插入图片描述
  • chgrp 【选项】【所有组】【文件名】修改文件的拥有组
    (1)-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
    (2)-f或–quiet或——silent:不显示错误信息;
    (3)-h或–no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
    (4)-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
    (5)-v或——verbose:显示指令执行过程;
    (6)–reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
    在这里插入图片描述
  • chmod 【选项】【权限说明】【文件名】
    (1)u:拥有人 g:拥有组 o:其他人------r:读取 w:写入 x:执行
    (2)=:设置权限 +:增加劝降 -:减少权限
    (3)r:4 w:2 x:1
    例1:chmod 777 /test/1.txt 表示修改文件1.txt的权限为拥有人、拥有组、其他人都有rwx权限。
    例2:chmod u=rw,g+rw,o-x /text/1.txt 表示修改文件1.txt的权限为,拥有人设定有rwx权限、拥有组在原本基础上添加rw权限,其他人在原有基础上减少x权限。
    在这里插入图片描述

2、关键文件字段

  • Linux当中,用户信息存放于/etc/passwd文件中,可通过cat /etc/passwd命令进行查看或者通过vim编辑器进入查看文件内容。
    在这里插入图片描述
  1. 用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  2. 口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”,为空则表示没有设置密码。
  3. 用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  4. 组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
  5. 用户描述信息:在图形化的登录界面中,当配置有描述信息时,会优先显示描述信息,不显示用户名,当没有配置用户信息时才会显示用户名,为了防止用户名被窃取。
  6. 主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  7. 登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell)。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
  • Linux中密码信息存放在shadow中,可选择进去查看
    在这里插入图片描述
  1. 用户名:表示存放的是该用户的相关信息。
  2. 密码信息:表示用户是否有密码,如果没有配置过密码则显示!!,如果有密码则显示密码加密过后的密文信息。
  3. 密码最后变更的时间:显示格式为从unix(诞生于1969年,但是从1970.1.1开始计算)诞生开始到修改的时候一共经过了多少天。
    date +%s 表示从1970到现在一共经历了多少天。
    echo [ [ (date + %s)/86400] 该公式计算从1970到现在经历了多少天。
  4. 密码最小存活时间:表示密码配置后多久可以再次修改,为空则表示随时可以修改。
  5. 密码最大有效期:五个9表示密码永不过期,为空表示密码用不过期。
    用户密码:/etc/shadw 改密码:passwd
    组密码:/etc/gshadw 改组密码:gpasswd admin
    newgrp admin 表示临时登录到组当中,可以通过id 【组名】进行查看。

三、shell

1、什么是shell

在这里插入图片描述
shell是一个提供人机交互的平台,将人的语言解析成机器语言,实现控制,然后将机器内的信息转译成人能够看得懂的语言进行输出,所以shell是内部的一套编译器,解释器,负责协调指令发送的一个脚本。

2、什么是bash shell

bash shell是所有编译shell中的一种,IBM的ksh、HP的csh、等都是Linux中比较流行的shell
shell中通配符的作用:
(1)*:表示匹配所有。
(2)?:表示有且只能匹配一个字符。
(3)[0-9]:列表匹配,表示0-9当中的数字,但只能匹配一次。
(4)[^abc]:表示排除列表中的字符,只能匹配一次。
(5)~:表示用户的家目录
(6)$ :表示引用变量,A=10, A A A表示引用变量A的结果; (command)引用命令执行的结果,如 ( h o s t n a m e ) c o m m a n d (hostname)显示主机名,‘command’作用等同于 作用。
(7){}:多选项含义
如:mkdir -p {a,b,c]/{e,f,g} 表示创建目录a,并且在a目录中再创建目录e、f、g,目录b中同理。

3、变量

1、定义变量:A=1000,定义一个变量,echo $ A,可以通过$去引用变量。
2、本地变量:仅在一个shell中有效的变量
3、环境变量:在所有的shell中都有效的变量,在所有的子shell中都有效的变量。

pstree 查看进程树
pstree | grep bash显示bash shell进程的树状结构。
变量依赖于进程产生,有父shell和子shell之间的区分。
可以通过bash命令进入不同的终端shell中,然后通过pstree | grep bash进程查看当前的shell。
例:定义变量:ABC=1000 此为本地变量
export ABC 设定环境变量,表示将ABC执行为环境变量
env 查看系统当中所有已经定义过的环境变量

  1. 定义本地变量:ZH=300
  2. 执行为环境变量:export ZH
  3. 查看环境变量:env | grep ZH
  4. set 查看所有环境变量,包括本地变量和环境变量
  5. unset ZH 取消变量
    作为环境变量也只有在当前子shell中有效,再打开的其他子shell中无效。
4、全局环境变量
  • vim /etc/profile 存放全局环境变量的文件,全局环境变量都需要写在这个文件当中。
    全局环境变量是直接写完存储在硬盘中的,如果需要读取运行,则必须加载到内存中才可,而对于本地和普通的环境变量则是直接写在内存当中。
    source /etc/profile : 重新加载硬盘中的全局环境变量至内存中,如果对全局环境变量做了修改则需要重新加载才会生效。
    source加载全局变量只在当前打开的终端内有效,换个终端后是无效的,可以用echo打印是否能够打印出来进行测试,除非经过了source后然后将当前用户注销然后重新登录才可保证全局有效。
    su user1 表示非登录到该用户的环境变量;su - user1 表示切换用户并且登录到该用户shell环境变量。
5、解决问题:实现不同用户读取同一个变量名字(MONEY)的值是不相同的,user1读取为100、user2读取为200、user3读取到为300。

此问题加深即为为什么root用户登录显示的提示符为#,其他用户登录进去显示为$,这里其实就是通过shell进行设定的。
在全局环境变量文件中新建变量:MONEY=“5000” 末尾export后面加上MONEY
加载完成后其他用户均可读到该环境变量,echo $MONEY 显示结果为5000。

  • 如果需要让其他用户读取该变量时得到不同的值,操作如下。
    在每个用户的家目录下/home/user1/中都有一个隐藏的用户环境变量文件:.bash-profile,可以选择在里面进行修改,添加变量:MONEY=“100”,末尾export后面添加变量名MONEY。
    所以实际当中,会存在一个全局环境变量对所有用户都是生效的,但是用户自身也会存在一个自己家目录当中的全局环境变量。此时用户会先读全局环境变量,然后读取家目录的全局环境变量,如果两者出现了重复的情况,则会用家目录中的去执行去覆盖全局下的环境变量。
5、vim /etc/bashrc 该文件也是存放环境变量的。(具体待后续)

-------------------------------------------------武汉艾迪时代IT教育----------------------------------------------
武汉艾迪时代IT教育

发布了24 篇原创文章 · 获赞 20 · 访问量 3770

猜你喜欢

转载自blog.csdn.net/Dreamsi_zhang/article/details/104476122