4.用户组和权限管理

1.用户和组账号概述

如果zhangsan被删除,它的UID会空着。新增的用户的UID会从现存的用户的UID往后排删除用户 userdel -r user(加-r会删除这个用户的家目录),如果删除这个用户,那么原先用户创建的文件的用户和用户组依然不变,系统识别一个用户是通过UID的而不是用户名。

  • Linux基于用户身份对资源访问进行控制
  • 用户帐号:
  •  超级用户root
  •  普通用户:一般只在用户自己的宿主目录中有完全权限
  •  程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等

组帐号:

  •  基本组(私有组)
  •  附加组(公共组)

UID和GID:

  •  UID(User Identity,用户标识号)
  •  GID(Group Identify,组标识号)

 

  • root用户的UID的固定值为0、root组帐号的GID号为固定值0
  • 1~499的UID、GID默认保留给程序用户使用,普通用户/组使用的UID、GID号在500~60000之间

 

 

2.用户

  • 任何用户被分配一个独特的用户id号(UID)
  • UID0标识root用户
  • 用户帐号通常从UD1000开始
  • 用户名和UID信息通常存储在/etc/ passwd文件中
  • 当用户登录时它被分配一个主目录并且运行一个程序(通常是一个shel程序)
  • 没有权限许可用户不能读取、写或者执行其它用户的文件
  • 每个用户属于一个主组,属于一个或多个附加组,一个用户最多有31个附属组
  • 每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限
  • 每个登录用户拥有一个指定的shell环境

2.1用户账号文件——/etc/passwd

用于保存用户的帐号基本信息

每一行对应一个用户的帐号记录,以:为分隔符

benet:x:500:500:BENET Student User:/home/benet:/bin/bash

  字段1:用户帐号的名称

 字段2:用户密码字串或者密码占位符“x”

 字段3:用户帐号的UID号

 字段4:所属基本组帐号的GID号

 字段5:用户全名

 字段6:宿主目录

 字段7:登录Shell信息

 

说明:x:登录该用户时需要输入密码,去掉x不需要输入密码,仅针对root有效,rhel8以前针对所有用户有效uid

  • 基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改

2.2.用户账号文件——/etc/shadow

用于保存密码字串、密码有效期等信息

每一行对应一个用户的密码记录

benet:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:14495:0:99999:7:::

字段1:用户帐号的名称

 字段2:加密的密码字串信息

 字段3:上次修改密码的时间

 字段4:密码的最短有效天数,默认值为0

 字段5:密码的最长有效天数,默认值为99999

 字段6:提前多少天警告用户口令将过期,默认值为7

 字段7:在密码过期之后多少天禁用此用户

 字段8:帐号失效时间,默认值为空

 字段9:保留字段(未使用)

 

  • 上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数

2.3.添加用户账号

useradd命令

格式:useradd  [选项]...  用户名

常用命令选项

-u:指定 UID 标记号,如果同时有-o选项,则可以重复使用其他用户的标识号

-d:指定宿主目录,缺省为 /home/用户名;如果此目录不存在,则同时使用-m选项,可以创建主目录

-e:指定帐号失效时间

-g:指定用户的基本组名(或UID号)

-G:指定用户的附加组名(或GID号)

-M:不为用户建立并初始化宿主目录

-s:指定用户的登录Shell

创建一个考试测试用的帐号exam01,指定属于users组,该帐号于2009-07-30失效

[root@localhost ~]# useradd -g users -e 2009-07-30 exam01

2.4.设置/更改用户口令

passwd命令

格式:passwd  [选项]...  用户名

常用命令选项

-d:清空用户的密码,使之无需密码即可登录

-l:锁定用户帐号

-S:查看用户帐号的状态(是否被锁定)

-u:解锁用户帐号

“未设置密码”的用户帐号尚未完成初始化,处于不可登录状态,这与“空密码”的情况(已经为用户设置密码,但密码字串为空)是不同的

“未设置密码”的用户将被禁止登录系统,而拥有“空密码”的用户是可以在本地终端登录的

2.5修改用户账号的属性

usermod命令

格式:usermod  [选项]...  用户名

常用命令选项

-l:更改用户帐号的登录名称

-L:锁定用户账户

-U:解锁用户账户

以下选项与useradd命令中的含义相同

 -u、-d、-e、-g、-G、-s

2.6删除用户账号

userdel命令

格式:userdel  [-r]  用户名

添加 -r 选项时,表示连用户的宿主目录一并删除

3.组

root组是没有特权的

组的存在是为了方便管理,设置权限,GID是组ID,一个用户可以加入两个用户组,如果两个组规则冲突,则允许优先

  • 用户指派给组
  • 每一个组被分配一个独特的组ID(gid)
  • GID保存在/etc/group中
  • 每一个用户都有自己的私有组
    • 能添加到其它组如需访问
  • 同一个组中的所有用户能共享属于这个组的文件

3.1组账号文件

与用户帐号文件相类似

/etc/group:保存组帐号基本信息

groupe1: x: :10000: user01, user02, usere3

◆字段1:组的名称

◆字段2:密码占位符"x"

◆字段3:组的ID号

◆字段4:该组是user1,user2和user3的附加组

/etc/gshadow:保存组帐号的密码信息

group文件内的最后一个字段中列出属于该组的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,”分隔

3.2添加组账号

groupadd命令

格式:groupadd  [-g GID]  组帐号名

3.3添加、删除组成员

gpasswd命令

用途:设置组帐号密码(极少用)、添加/删除组成员

格式:gpasswd  [选项]...  组帐号名

常用命令选项

-a:向组内添加一个用户

-d:从组内删除一个用户成员

-M:定义组成员列表,以逗号分隔

groupments管理组内成员

-l:列出组内的用户

-p:清空用户

3.4删除组账号

groupdel命令

格式:groupdel  组帐号名

3.5修改组信息

groupmod 命令

-n:指定新组名

4.用户和组账号查询

id命令

用途:查询用户身份标识

格式:id  [用户名]

groups命令

用途:查询用户所属的组

格式:groups  [用户名]

finger命令

用途:查询用户帐号的详细信息

格式:finger  [-l]  [用户名]

users、w 、who命令

用途:查询已登录到主机的用户信息

5.Linux文件安全

5.1文件/目录的权限和归属

  • 访问权限
    • 读取(r):允许查看文件内容、显示一个目录下的所有内容
    • 写入(w):允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
    • 可执行(x):允许运行程序、进入一个目录列出它下面所有的内容,需要r权限才能读目录内容
    • -:没有任何权限(在r,w或者x的显示位置)
  • 归属(所有权)
    • 拥有人:拥有该文件或目录的用户帐号
    • 拥有组:拥有该文件或目录的组帐号

用户对文件到底拥有何种权限,需要由访问权限和归属(所有权)共同决定

硬链接:把索引复制了一遍

软链接:快捷方式

5.2文件安全

     匹配身份,不同的身份有不同的权限

    用户  ----------------------------------- ---------------> 文件

  • 每一个文件都有一个uid和gjid
  • 任何进程运行时都带一个uid和一个或多个gid标识符
  • 通常决定于哪个用户执行这个进程
  • 三种访问类别
    • 运行的进程跟文件有着同样的uid(user)
    • 运行的进程跟文件有着同样的gid( group)
    • 其它进程( other)

权限优先级:拥有人-->  拥有组  --->其他人

  • 如果UID匹配,用户权限适用
  • 否则,如果GID匹配,组权限适用
  • 如果都不匹配,其它权限适用

5.3查看文件/目录的权限和归属

查看文件和目录的权限

#ls  -l文件名

#ls-ld目录名

-w-r--r--   .                          1        root     root    2484   Mar 1800: 04   /etc/passwd

文件类型  访问权限  连接数  所属人  所属组  大小  修改时间   文件名

“-rw-r—r--”部分的第一个字符表示文件类型,可以是d(目录)b(块设备文件)c(字符设备文件),减号“-”(普通文件)、字母“l”(链接文件)等,其余部分指定了文件的访问权限,主要使用了四种不同的权限字符: r    可读 w   可写 x   可执行 -   无权限 ,rwx- 权限字符还可分别表示为8进制数字4210

5.4改变文件的拥有关系

  • 只有root账户可以改变文件的拥有人
  • 只有root和拥护者可以改变文件的拥有组
  • 改变文件的拥有人     chown  
  • 改变文件的拥有组      chgrp   
  • 改变文件的权限         chmod

5.5设置文件/目录的权限

chmod命令

格式1:

chmod 

 [ugoa]

 [+-=]

 [rwx]

 文件或目录...

u、g、o、a分别表示属主、属组、其他用户、所有用户

+、-、= 分别表示增加、去除、设置权限

对应的权限字符

被修改权限的文件或目录

格式2

 chmod

nnn(分别表示u、g、o的权限)

 文件或目录...

3位八进制数;“nnn”为需要设置的具体权限值,如“755”、“644”等

 

[root@localhost ~]# chmod u+x,o-r mymkdir

[root@localhost ~]# chmod 755 mymkdir

常用命令选项:

-R:递归修改指定目录下所有文件、子目录的权限

使用递归的方式将“/usr/src/”目录中所有子目录、文件的权限都设置为“rw-r--r--”

[root@localhost ~]# chmod -R 644 /usr/src/

5.6设置文件/目录的归属

chown命令

格式

chown

拥有人

文件或目录

chown

拥有组

文件或目录

chown

拥有人:拥有组

文件或目录

常用命令选项:

-R:递归修改指定目录下所有文件、子目录的归属

需要设置文件或者目录的归属时,可以通过chown、chgrp命令进行

chown命令既可以修改属主,也可以修改属组,而chgrp命令只用于修改属组信息(因此并不常用)

# chown user1 test

设置文件test的属主为用户 user

#chown : it2 test

设置文件test的属组为用户组it2

# chgrp it2 test

效果同上

#chown user3:t3 test

设置文件test的属主为user3,并设置文件的属组为it3

把passwd的权限复制给group

把我虚拟机上的文件拷贝到另一个虚拟机上 拷贝的是快捷方式对应的真实文件,有几个软件就拷贝多少份,我们一般不用cp或scp进行直接备份

scp 文件夹路径 对方用户名@计算机IP:绝对路径

我们一般用打包和压缩,来备份文件

把etc/打包并压缩到/tmp/下 并取一个etc.tar.gz这样的名字

#tar -zxvf etc.tar.gz  (解压到当前目录)

#tar -zxvf etc.tar.gz  -C /date (解压到date目录下)

Linux主机连接另外一台Linux主机,不需要安装客户端和服务端,直接使用ssh协议

#ssh   目的虚拟机IP  //默认连接目的端虚拟机的用户是和源端的当前登陆账户一样

Linux主机与Linux主机之间传输文件用scp

把自己虚拟机的文件拷贝给目标虚拟机

# scp   /data/test/test.sh  root@192.168.73.123:/root

                        用户@IP:目的目录的绝对路径

把别人虚拟机的文件拷贝给我自己的虚拟机

#ssh 别人虚拟机的IP

#cd

#ls

#scp  /root/test.sh  root@自己虚拟机的IP:/目的目录的绝对路径

windows和Linux主机间传输文件,xftp(sftp)/winSCP这几个工具

云计算里面物理服务器默认是禁止root用户登陆,设置了一个普通用户gandalf来登陆后台

禁用root账户,在别人的机器上

  cd /etc/ssh

   ls

   pwd

   vim sshd_config//第49行允许root登陆的yes改成no,同时去掉注释(#)

       service sshd restart

在自己的机器上

ssh  别人的IP //  会执行失败,输密码会回显权限拒绝

ssh  user2@别人的IP    登陆到目的虚拟机的user2身份

    su  -   root  

将自己虚拟机的文件拷贝到别人的虚拟机  但是别人的虚拟机是禁止root账户登陆的

#scp  /etc/passwd  gandalf@别人的IP:/root   会失败

#scp  /etc/passwd  gandalf@别人的IP:~

#ssh  别人的IP

#cp   ~gandalf/passwd  /root

总结:执行可执行文件有3种方法

法1:在可执行文件的所在目录下,就可以相对路径的方式来执行,例如 ./disk.sk。

法2:在或者不再可执行文件的目录下,都可以用绝对路径方式来说执行,/data/disk.sh。

法3:在或者不再可执行文件的目录下,都可以直接用可执行文件名来执行,就是把文件名当命令用,那么需要大家提前把可执行文件的父目录加入到PATH变量中,PATH变量是用户环境变量,要在各个用户的家目录下的.bash_profile文件中定义

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值