linux用户、组、文件

多用户操作系统

多用户操作系统,就是允许多个用户同时登陆操作系统,并可以执行各自的操作,互不影响。

例如:linux、windowServer

如图所示:可以同时登录多个用户

 

单用户操作系统,只允许一个用户登录操作系统,例如:window7、10等,

如图所示:如果登录第二个用户时,第一个用户会被断开

 

 

本图描述的是用户、组、权限、文件之间的关系,

*创建文件,给文件分配组权限

*创建用户、组

*用户登录过程:

        用户输入账号、密码,会在用户文件和密码文件中比对,正确则允许登录,登录进来的用户也就拥有了一个身份(令牌),令牌是该用户身份的象征,令牌携带了用户的组权限 信息,表示可以对哪些文件进行操作。

 

用户及权限详解

组  /etc/gshadow  存放组的密码

系统有数据库存放用户的UID和GID

在计算机输入id

使用组来简化授权

优先使用基本组,用户只能属于一个基本组 用户的默认组

基本组不能满足授权要求了,创建附加组,用户可以属于多个附加组

私有组 创建用户时,如果没有指定基本组,系统会创建一个和用户同名得组

用户类别

管理员  管理员的ID 就是0

普通用户  1-65535给普通用户 

   系统用户  1-499  专门用来运行程序的身份 不需要登陆系统

   普通用户  500-60000  可以登陆系统

Login.defs定义了文件的

[root@WebServer ~]# cat /etc/login.defs | grep -v '^#'

  

组 管理员组

   普通组

      系统组

      一般组

 

用户组类别:

   私有组:创建用户是如果没有指定所属的组 系统会自动为其创建一个同名的组

   基本组:用户的默认组

   附加组:额外组 默认组意外的其他组

 

 

查看passwd命令的帮助 有几章?

 

 

查看帮助第5章

 

 

 

 

Passwd文件  存放的是用户信息

 

 

 

 用户信息用冒号分隔开。

第1个字段:account  登陆名

第2个字段:password  密码

第3个字段:UID 用户ID

第4个字段:GID 基本组的ID

第5个字段:comment 注释

第6个字段:HOME  主目录

第7个字段:Shell 分配给用户的shell

 

查看Linux可用的shell 目录下合法的shells

nologin  不允许用户登陆

 

 

shadow文件   存放的是用户的密码

whatis  shadow  查看shadow命令帮助有几章

man 5 shadow  查看第五章

 

/etc/shadow

 

 

第1字段:用户名

第2字段:加密的密码

第3字段:从1970年至上次改密码时间的天数

第4字段:还有几天密码才能更改

第5字段:还有多少天密码必须更改

             :还有多少天用户就要受到密码过期的提示

              :在用户过期后密码禁用之间的天数

              :从1970年开始过多少天账户禁用

              :保留字段

注:在用户密码前面加 !!     , 就是锁定用户,锁定后的用户无法登录系统!

锁定用户:

 

 

解锁用户:

 

 

 

 

 

 

 

 

查看useradd和adduser命令位置 其实adduser指向了useradd

 

添加用户  可以看到用户的用户ID号 组ID号

 

 

设置密码

 

 

 

用户的默认环境

 

 

 

在/etc/default/useradd文件为设置添加的用户规则文件。

1 # useradd defaults file

2 GROUP=100                                                # 用户组ID

3 HOME=/home                                              #把用户的家目录创建在/home中。

4 INACTIVE=-1                                                #是否启用帐号过期停权,-1表示不启用。

5 EXPIRE=                                                       #帐号终止日期,不设置表示不启用。

6 SHELL=/bin/bash                                       #所用SHELL的类型

7 SKEL=/etc/skel                                            #默认添加用户的目录默认文件存放位置。也就是说,当用户用useradd添加用户时,用户主目录下的文件都是从这个目录中复制的。

8 CREATE_MAIL_SPOOL=yes                    #是否创建用户邮件缓冲,yes表示创建

可以更改默认shell

 

 

组管理

groupadd

添加组

Groupadd Manager

查看组和组成员

 

添加组

 

Groupdel

 

用户管理相关命令

Useradd

userdel

Usermod

Passwd

Chsh

Chfn

Finger

Id

Chage

 

组管理

Groupadd

Groupdel

Groupmod

Gpasswd

 

权限管理

Chown

Chgrp

Chmod

Umask

 

用户管理

Useradd

Useradd

Adduser—>useradd

 

Useradd [options] username

-u指定用户的UID  大于500并且不能重

 

 

 

 

-g 指定用户基本组

 

-G可以为用户指定多个附加组 用逗号隔开

 

-c “comment” 注释信息

-d 为用户指定家目录

 

-s 指定shell的路径 最好是/etc下shells可用的安全shell

 

 

创建一个不允许登陆的用户  没有合法的shell不允许登陆

 

可以测试 没有合法shell的用户不能登陆和切换 cheng可以 szhang不可以

 

 

 

创建用户指定用户的shell为tcshell

 

 

 

环境变量

$PATH

$HISTZISE

$SHELL

 

 

-m 如果家目录不存在 强制创建 –k 将/etc/skel目录下的文件复制过去 存放用户的配置文件

 

-M 不给用户创建家目录

查看默认用户定义

 

 

 

创建没有家目录的用户 登陆后是这个样子的

 

-r 创建系统账户 没有家目录 id号1-499

 

Userdel

默认不删除用户家目录

 

Userdel –r 删除用户的同时删除用户家目录

 

Id

查看当前登录用户信息

 

   -g 显示属主

-G 所属组

 

 

 

Usermod

   -u  UID

   -g   GID

   -a -G  给用户添加新的附加组  不适用-a选项 会覆盖此前的附加组

   -c 注释信息

   -d –m 更改家目录 将文件移动到新位置

   -s 更改用户的shell

   -l 更改登陆名

-L 锁定用户 禁用

-U 解锁用户

下面将用户添加到附加组Manger

 

移动用户主目录

 

 

锁定用户

 

 

登陆失败

 

解锁用户

 

更改用户shell

 

chsh  

还有个命令直接更改用户shell

 

 

Finger

Finger命令用来查看用户信息

我的系统默认没有安装finger命令

安装finger命令

 

 

显示用户信息

查看finger命令位置 类型

 

 

查看用户信息

 

登陆过之后再次查看

 

chfn

修改finger显示的信息

 

 

 

passwd

更改用户密码

默认更改自己的密码

管理员可以更改任何用户的密码

passwd tao

 

 

更改用户密码为redhat  使用脚本可以方便创建用户并指定密码

 

 –l可以锁定用户账户

  -u 解锁用户

 

man passwd 查看帮助

 

-d 清除密码

 

pwck

检查用户账户完整性

 

 

 

chage

和用户密码相关的设置

-d 最近一次的修改密码时间

-E 过期时间

-I 非活动时间

-m 最短使用期限

-M 最长使用期限

-W 警告时间

 

更改系统时间

用户更改密码 看看用户上一次更改 密码时间到1970年的多少天

 

密码过去警告

 

Whoami

显示当前用户名

[root@localhost ~]# whoami

root

Who

显示系统中有哪些用户登录系统及其修改信息

显示登录的用户有root和wsl

[root@localhost ~]# who

root     pts/0        2022-03-08 11:13 (192.168.101.116)

wsl      pts/1        2022-03-08 11:21 (192.168.101.116)

wsl      pts/2        2022-03-08 11:22 (192.168.101.116)

 

组管理

Groupadd

-g 指定GID

-r 添加系统组

 

groupmod

修改组

-g 修改GID

-n 修改组名称

 

groupdel

删除组

 

 

 

 

gpasswd

将用户从组中删除

 

[root@WebServer ~]# gpasswd -d zhang teachers

给组设置密码,用户可以输入密码临时将属组切换到该组

 

newgrp

将用户的基本组临时切换到其他组  登陆到某个组,退出使用exit

 

可以看到用户所属的基本组

 

输入exit 退出所属组

 

 

 

手动创建用户

tom  UID 580 描述javaStudent

附加组 teachers  GID 550

 

 

 

 

 

拷贝用户配置文件 更改权限

 

可以切换到tom,但空密码不允许登陆

 

openssl

使用openssl计算密码

 

 

 

查看passwd 有一个计算密码哈希值的命令

 

 

man sslpasswd 查看帮助

 

 

 

 

复制

$1$12345678$gvrtc6PloAB.SZlQ21kb0/

编辑/etc/shadow

 

使用tom连接

 

 

 

登陆成功

 

Shell的类型

交互式shell  等待用户的输入 执行提交的命令  exit退出

 

非交互式shell   执行shell脚本 脚本执行结束shell退出

 

登录式shell

   正常通过某终端登录

su – username 或 su –l username

非登录式shell

   su username

   图形界面下打开的终端

   自动执行的shell脚本

 

Bash的配置文件

默认用户home目录的文件从skel复制过去

[root@WebServer ~]# ls -a /etc/skel/

 

全局配置 更改后对所有用户生效

    /etc/profile  /etc/profile.d/*.sh  /etc/bashrc

个人配置

   ~/.bash_profile  ~/.bashrc

 

Profile类的文件

    设定环境变量   如果用户配置和全局配置设置冲突 作用范围小的越最终生效

    登陆前运行命令或脚本

 

Bashrc类文件

设定本地变量

定义命令别名

 

登录式shell如何读取配置文件

先读取/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile—>~/.bashrc—>/etc/bashrc

非登录式shell如何读取配置文件

读取顺序 ~/.bashrc-->/etc/bashrc—>/etc/profile.d/*.sh

 

设置别名永久生效

 

 

Logout注销

再次登陆就生效

登陆执行脚本

 

登陆后

 

 

更改用户用户的权限遮罩码

 

注销后重新登陆 可以看到权限掩码

 

全局权限遮罩码

Udi大于199 并且用户的GID和UID相同 umask 002

 

 

 

 

 

 

文件权限

计算机资源

   权限

   用户

   组 可以给用户授权

 

 

文件的所有者 属组 其他

 

用户:标识符

用户组:标识符

 

 

文件:每个用户发起一个进程 决定了该进程的权限  进程的安全上下文

 

文件

r:可读 可以使用cat查看文件内容

w:可写 可以编辑或删除此文件

x:可执行 exacutable 可以在命令提示符下提交给内核运行

 

 

目录

r:可以对此目录执行ls 列出内部的所有文件

w:可以在此目录中创建文件

x:可以使用cd切换进此目录 也可以使用ls –l查看内部文件的详细信息

 

不建议文件默认有执行权限 建议目录有x权限

 

r-x 读和执行

用三位二进制或者十进制标识:

000--- 无权限     0

001 --x 执行       1

010 -w- 写         2

011 -wx 写和执行   3

100 r-- 只读        4

101 r-x 读和执行    5

110 rw- 读和写      6

111 rwx 读写执行    7

 

 

三类用户的权限 可以使用三位8进制组成

 

752

660

740

 

用户信息库 还包括用户的shell

 

用户的ID  UID  在/etc/passwd 存放用户的ID

组ID     GID   在/etc/group 存放组的ID

 

 

更改文件属主属组

文件的三类用户

u  属主

g  属组

l  其他用户

 

chown 

指定哪个文件属主是谁 只有管理员能够改变文件属主

 

 

 

 

更改目录所有者,并不会更改目录中文件的所有者

 

math.txt文件所有者没变

 

-R 修改目录以及内部文件和子目录的属主

 

[root@localhost ~]# chown wsl:students -R /hw

 

--reference =/path/to/somefile file 参考一个文件的所有者更改其他文件所有者

 

 

 

只修改属主:

[root@localhost ~]# chown wsl /hw/test6.txt

 

只修改属组:

[root@localhost ~]# chown :students /hw/test6.txt

chgrp

-R  递归修改

--reference=/path/to/somefile file

 

 

 

同时更改属主和属组

chown username:groupname /tmp/english.txt

 

 

只更改属组

 

 

 

使用.也可以更改属主和属组

 

 

chown –reference 更改的不只是属主 同时也更改属主

 

 

修改文件权限

chmod

三类用户

u

g

o

三类权限

r

w

x

 

 

修改三类用户权限

修改某类权限

修改某类用户的某位权限

语法:

chmod 用户+/=/-权限 文件/文件夹

如果用户+,是对原有权限相加,如果是=号,是等于赋予的权限,如果是-号,则是对权限相减

 

 

更改三类用户

 

参照权限

 

更改属主的权限

 

更改属组的权限

 

 

同时更改多个组的权限  属组和其他组改成只读

 

将属组和其他组 更改为执行和读取

 

如果两类用户不一样的权限 才分开

 

全部用户读取

 

给用户增加某个权限

 

给属主属组增加写权限

 

给所有人增加执行权限

 

 

去所有人执行权限

 

 

a可以省掉

 

可以同时去掉多个权限

 

新建一个用户可以看到主目录只有自己是读写执行

 

 

Umask 遮罩码

用户创建文件默认权限

666-umask

用户创建目录 默认权限

777-umask

 

普通用户创建文件默认没有执行权限

 

 

普通用户umask是002  创建文件 默认权限是666-002=664 创建文件夹 默认权限

 

目录的默认权限

 

 

管理员的是022

可以看到管理员和普通用户的区别 管理员创建的文件和文件夹 属组 都不允许写入

 

用户创建文件默认权限

设定用户umask

 

 

 

文件默认不允许有执行权限,如果算的结果有执行权,怎将其权限加1

 

 

如果创建文件和文件夹默认权限设置为其他人 没有任何权限

将权限掩码设置为027

666-027

777-027

 

 

 

posted @ 2022-03-09 17:16  a龙  阅读(144)  评论(0编辑  收藏  举报