Linux基础——账号与权限管理(四)

1.管理用户账户

1.1 账号概述

Linux系统中的用户账号和组账号的作用在本质上是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在些许差异。

1.1.1 用户账号

在Linux中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同,主要包括超级用户、普通用户和程序用户。
超级用户:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高权限。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只是用普通用户账号。
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
程序用户:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail。
ROOT–UID 固定值是0
程序–UID 1—999
普通账号UID 1000-?

1.1.2 UID号

Linux系统中的每一个用户账号都有一个数字形式的身份标记,称为UID,对于系统核心来说,UID作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的,root用户账号为固定值0,而程序用户账号的UID号默认为1-999,1000-60000的UID默认分配给普通用户使用。

1.2用户帐号文件

Linux系统中的用户账号,密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。
与用户账号相关的配置文件主要有两个,分别是/etc/passwd,/etc/shadow。前者用于保存用户名称、宿主目录、登录shell等基本信息,后者用于保存用户的密码、账号有效期等信息。在这两个配置文件中,每一行对应一个用户帐号,不同的配置项之间使用冒号:进行分割。

1.2.1 passwd文件中的配置行格式

系统中所有用户的账号基本信息都保存在/etc/passwd文件中,该文本是文本文件,任何用户都可以读取文件中的内容。
head -2 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sdivlin:/sbin/nologin
在passwd文件开头的部分,包括超级用户root及各程序用户的账号信息,系统中增加的用户账号信息将保存到password文件的末尾。passwd文件的每一行内容中,包含七个用冒号:分隔的字段,从左到右个配置字段的含义分别如下所示。
1 用户账号的名称,也是登陆系统时使用的识别名称。
2 密码占位符“X”或经过加密的用户密码字串。
3 用户账号的UID号。
4 所属基本组账号的GID号。
5 用户名描述信息,可填写与用户相关的说明信息,用户全名。
6 家目录,宿主目录,该用户登陆后所在的默认的工作目录。
7 shell信息,一般是/bin/bash。登录shell等信息,用户完成登陆后使用的shell。
head /etc/passwd
head - 2 /etc/passwd
tail -2 /etc/passwd
/sbin/nologin ###有些账号是用来访问服务,不是用来登录系统。
在这里插入图片描述
基于系统运行和管理需要,所有用户都可访问passwd文件中的内容,但是只有root用户才能更改。将密码转存入专门的shadow文件中,passwd仅保留密码占位符"x"。

1.2.2 shadow文件中的配置行格式

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。
/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。
注意,如果这个文件的权限发生了改变,则需要注意是否是恶意攻击。
shadow文件的每一行内容在,包含了九个冒号:分割的配置字段,从左到右哥配置字段含义分别如下所述。
1 账户名
2 使用 MD5加密的密码字串信息,当为*或者!!时,表示此用户不能登陆到系统。若该字为空,则该用户无需密码即可登录系统。
###做项目的时候,所有设备上线都要弱口令扫描,如果结果说密码强度不高,则需要重新设置密码。
如果过弱口令方案,你可以备份shadow文件,然后进shadow 删除没过的账号。
3 上次修改密码时间 1970年1月1号到最近修改密码间隔的天数
4 密码的最短有效天数,如0则不限制
5 密码的最长有效天数,如99999则不进行限制
6 提前多少天告警,用户口令将过期,默认是7
7 密码过期后多少天内禁用此用户
8 账号失效时间,1970年1月1日计算,默认是空则账号永久使用
9 保留字段,目前没使用
root: 6 6 6SBb76V0:17470:0:99999:7::: 在这里插入图片描述

1.3 账号管理

1.3.1 useradd命令——添加账户

useradd命令可以用于添加用户,基本格式如下
useradd [选项] 用户名
最简单用法就是不添加任何选项,只使用用户名useradd命令的参数,按系统默认配置建立指定的用户账号。使用useradd命令添加用户账号时主要完成以下几项任务。

  • 在/etc/passwd文件和/etc/shadow文件的末尾增加该用户账号的记录
  • 若未明确指定用户的宿主目录,则在/home目录下自动创建 与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始文件。
  • 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group、/etc/gshadow文件中。
useradd tom
cat /etc/passwd
####tom:x:500:501::/home/tom:/bin/bash
passwd tom
##abc123###设置密码abc123
who am i    ###我是谁看下
[tom@localhost /]$ who am i
tom      pts/1        2017-11-10 21:53 (192.168.1.100)

以下列出了useradd命令中用于设置账号属性的几个常见选项
-u 指定UID多少
-d 指定宿主目录
-e 指定账户失效时间
-g 指定用户基本组
-G 指定用户附加组 ###既可以属于用户组也可以同时属于其他
-M 不建立宿主目录
-s 指定用户的登录shell
-g 基本组
-G附加组
userdel -r tom1 如果tom1在登录的时候是无法删除
useradd -s /sbin/nologin -g tom lisi #####不能登录
useradd -M -G tom lisi1 ###添加lisi1账户,它没有家目录同时属于tom组
cat /etc/gshadow

1.3.2 用户账号的初始配置文件

添加新用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始文件包括.bash_logout,.bash_profile,.bashrc。其中
.bashrc_profile 文件中的命令将在该用户每次登陆时被执行;.bashrc文件中的命令会在每次加载/bin/bash程序时执行(当然也包括登陆系统),而.bash_logout文件中的命令将在用户每次退出登录时自行。
在.bashrc等文件中,可以添加自己设置的可执行语句,以便自动完成镶银的任务。

在这里插入图片描述在这里插入图片描述在这里插入图片描述s

1.3.3 passwd命令——设置/更改用户口令

使用passwd可以设置密码和修改密码,root用户有权管理其他账号的密码。普通的用户只能执行单独的passwd命令修改自己的密码。
passwd命令除了可以修改账号密码还能够对用户账号进行锁定、解锁,也可将用户的密码设置为空。
-d 清空指定用户密码,仅使用用户名即可登录系统。
-l 锁定用户账户的状态
-S 查看用户账户的状态
-u 解锁用户账户
通过passwd锁定的用户账户,将无法再登录系统(shadow文件中的对应密码字符串前将添加!!字符)
,只能由管理员来解除锁定。

1.3.4 usermod命令——修改用户帐号属性

对存在的账号,usermod可以更改账户的所有属性。
-u 修改用户的UID号码
-d 修改用户的宿主目录位置
-e 修改用户的账号失效时间,可使用YYYY-MM-DD的日期格式。
-s 指定用户的登录shell
-l 更改用户账号的登录名称(login name)
-L 锁定用户账号
-U 解锁用户账户若要修改已有账号的宿主目录,需要先将该账号原有的宿主目录转移到新的位置,然后通过usermod命令设置新的宿主目录位置。

mv /admin /home
usermod -d /home/admin admin 

usermod 同样可以对账号进行锁定、解锁操作,经usermod命令锁定的账号也不能登录系统(shadow文件中的对应密码字串前将添加!字符)

1.3.5 userdel——删除用户账号

userdel命令可以删除用户账号,使用该命令也需指定账号名称作为参数,结合-r选项可以同时删除宿主目录。

2.管理组账号

2.1 组账号管理

对组账号的管理命令使用相对较少,主要包括groupadd,groupdel,groupwsd等命令。
对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种类型。每个用户账号可以是多个组账号的成员,但是基本组账号只有一个。

2.1.1 组账号文件

与组账号相关的配置文件也有两个,分别是/etc/group 、/etc/gshadow。前者用于保存组账号名称、GID号,组成员等基本信息,后者用于保存组账号的加密密码字串等信息。某一个组账号包含哪些用户成员,将会在group文件内最后一个字段体现出来,多个组成员之间使用逗号,分隔。
grep “^root” /etc/group //检索root组包括哪些用户

grep “root” /etc/group //检索哪些组包括root用户在这里插入图片描述

2.1.2 添加、删除、修改组账号

(1)groupadd命令——添加组账号
使用groupadd命令可以添加一个组账户,需要指定GID号时,可以使用-g选项。
例:groupadd -g 10000 class01 添加一个名为class01的组账号,并指定GID为10000。在这里插入图片描述
(2)gpasswd命令——添加、设置、删除组成员
gpasswd本来用于设置组账号的密码,由于该功能极少使用,实际上该命令更多的用于管理组账号的用户成员。需要添加、删除成员用户是,可分别使用-a、-d选项。
如果需要同时指定组账号的所有成员用户,可以使用-M选项。在这里插入图片描述
(3)groupdel命令——删除组账号
groupdel删除组账户。添加指定的组账号名称作为参数!述](https://img-blog.csdnimg.cn/20200629162347298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ3MTYxMjk1,size_16,color_FFFFFF,t_70)
(4)useradd命令——添加用户账号时指定组
使用useradd命令添加用户时可以直接指定所属组。
例:添加mike用户直接指定mike的基本组为mike,并加入到ftpuser组,同时指定主目录为/ftphome/mike 并且不允许mike 通过本地登录服务器
useradd -d /ftphome/mike -g mike -G ftpuser -s /sbin/nologin mike
(5)usermod命令——修改用户账号属性
对系统中已经存在的用户账号,可以使用usermod命令加选项与用户名诚心设置该账户的所属组。
-g 修改用户的基本组名或GID。
-G 修改用户的附加组名或GID。

2.2 查询账号信息

在用户管理工作中,虽然可以查看用户账号、组账户的配置文件也可以查询相关信息,但是并不直观,还可以使用几个常用的查询命令工具,如id、groups、finger、w等。

2.2.1 id——查询用户账号的身份标识

id命令可以快速查看指定用户账号的UID、GID等标识信息。id root 可以查看root账号的用户id号,组id号,以及所在的附加组id号。在输出结果中,gid和groups部分第一个组账号对应该用户的基本组,groups部分其他组账号为该用户附加组。

2.2.2 groups命令——查询用户账号所属的组

使用groups可以查询指定的用户账号属于哪个组。
groups
groups deamon

2.2.3 finger命令——查询用户账号的登录属性

使用finger命令查询指定用户账号的登录属性等详细信息,包括登录名称、完整名称、宿主目录、登录shell等。
例:finger teacher

2.2.4 w命令——查询当前主机的用户登录情况

w命令可以查询当前主机的用户登录情况,列出登录账号名称、所在终端、登陆时间、来源地点等信息
w

3.文件的权限及归属

Linux文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限和文件所有者,简称为权限和归属。其中访问权限包括读取、写入、可执行三种基本类型,归属包括属主、属组。Linux系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制。
由于root用户是系统的超级用户,拥有完整的管理权限,因此在练习相关命令操作时建议不要以root用户作为限制对象,否则可能看不到效果。

3.1 查看文件的权限及归属

使用带-l选项的ls命令时,将以长格式显示出文件的详细信息,其中包含了该文件的权限和归属等参数。
第一个字段的数据表示该文件的访问权限,-rw-r–r--.,权限字段由四部分组成,各自含义如下
1 第一个字符:表示该文件的类型,可以是目录d,块设备文件b,字符设备文件c,普通文件-,链接文件l等。
2 第2~4个字符,表示该文件的属主用户(user)对该文件的访问权限。
3 第5~7个字符,表示该文件的属组内各成员用户(group)对该文件的访问权限。
4 第8~10个字符,表示其他任何用户(other)对该文件的访问权限。
第11 个字符,这里的.与SELinux有关。
在表示属主属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符r,xw,x,分别表示可读可写可执行,r,w,x权限字符也可分别表示为八进制的数,4,2,1,表示一个权限组合时需要将数字进行累加。若需要去除对应的权限,则使用-表示。

3.2 设置文件的权限及归属

3.2.1 设置文件权限chmod

设置文件权限,主要通过chmod命令,在设置针对每一类用户的访问权限时,可以采用两种形式的权限表示方法:字符形式和数字形式。
使用chmod命令设置文件的权限是,基本的命令格式如下
chmod [ugoa… ] [±= ] [rwx ] 文件…
或者
chmod nnn 文件…
ugoa表示该权限设置所针对的用户类别。u代表文件属主,g代表文件属组内的用户,o代表其他任何用户,a代表所有用户(u,g,o的总和)。
±=表示设置权限的操作动作。+代表增加相应的权限,-代表减少相应的权限,=代表仅设置对应的权限。
rwx是权限的字符组合形式,也可拆分使用,如r,rx等。
需要将不同类别的用户对文件的权限设置为不同值时,可以用逗号隔开。
chmod u+x,o-r mymkdir
更简易的方法是采用数字形式表示的权限模式
chmod 755 mymkdir

3.2.2 设置文件的归属chown

chown命令设置文件归属,可以只设置属主或属组,也可以同时设置属主和属组。
chown 属主 [:[属组] ] 文件…
同时设置属主属组时,用户名和组名之间用冒号:进行分隔。如果只设置属组时,需使用:组名的形式。
如果只需要设置目录或文件属主,直接以用户名表示归属即可,递归修改目录归属同样可以使用-R选项。
chown -R ftp /var/ftp/pub/
同时设置目录和文件的属主属组时,需要用到分隔符:。
在Linux系统中,设置文件访问权限,归属是目录和文件管理的常见工作内容,很多网络服务或应用程序的安全强化工作实际上也包括了文件权限和归属的修改。因此,在具体工作中应慎重进行,不当的权限设置可能会导致系统故障,甚至带来一些安全隐患。

4.目录的权限及归属

4.1 查看目录的权限及归属

目录也有两个属性:权限和归属。但是这两个属性对目录存在不同的意义。文件的访问权限主要针对的是文件内容,而目录的访问权限则是针对目录内容(包括目录下的子目录和目录下的文件),具体区别参照下表。

权限文件目录
r查看文件内容查看目录内容(显示子目录,文件列表)
w修改文件内容修改目录内容(在目录中新建、移动、删除文件或子目录)
x执行该文件(程序或脚本)执行cd命令进入或退出该目录.

目录的归属也就是目录的所有权,同样也分为属主和属组,分别表示拥有该目录的用户账号和组账号。

4.2 设置目录的权限及归属

4.2.1 设置目录权限chmod

修改目录权限命令的基本格式为
chmod [ugoa… ] [±= ] [rwx ] 文件…
或者
chmod nnn 文件…
nnn为需要设置的具体权限值,ugoa表示该权限设置所针对的用户类别。u代表文件属主,g代表文件属组内的用户,o代表其他任何用户,a代表所有用户(u,g,o的总和)。
±=表示设置权限的操作动作。+代表增加相应的权限,-代表减少相应的权限,=代表仅设置对应的权限。
rwx是权限的字符组合形式,也可拆分使用,如r,rx等。
除此之外,在修改目录权限时还会用到-R选项,该选项代表递归修改执行目录下所有子项的权限。

4.2.2 设置目录属性chown

命令格式:
chown 属主目录…
chown :属组目录…
chown 属主:属组目录…
chown也有-R选项,该选项与chown配合使用可以递归修改制定目录下所有文件、子目录的归属。

4.3文件属性和文件系统属性的关系

Linux下文件都有若干个属性,如读写执行等基本权限,以及是否为目录文件,链接文件的属性。但这些属性属于高层次的文件属性,它和具体的文件系统无关。在文件系统这一层,文件同样有很多属性,chattr和lsattr指令就是设置和查看基于ext2/ext3文件系统的底层属性。
这些权限对于一些具有特殊要求的文件很有帮助,比如服务器日志或者某个比较重要的文件。通过chattr命令设置的文件或目录,即使在root权限下也不能直接删除,只有去除其隐藏权限才能进行操作。下面chattr命令和lsattr命令的简介。
chattr命令的基本格式如下所示
chattr [±=] [ai] 文件
上述格式中,字符组合 [±=] [ai]的形式表示要设置的权限模式。其中 [±=] [ai]的形式中,每一个参数与选项的含义及用法如下所述
chattr命令常用的选项有

+:在原有的基础上追加参数
-:在原有的参数上,移除参数
=:更新为指定参数
a:设置只能项文件中添加数据,而不能删除。
i:设置后,不能对文件进行删除、写入、改名等操作。

注意:设置这些参数必须在root权限下。
使用chattr命令可以设置某些特殊的文件只能添加数据,可使用+a选项进行设置,然后使用lsattr文件名 命令查看改文件的底层属性。若想取消只能向文件中添加数据权限,可使用-a选项进行设置,具体操作如下所示。

touch test
chattr -a test
man lsattr >test
lsattr -a test
man chattr >>test

使用lsattr命令可现实文件的底层属性,其中配合该命令查看文件的属性常用的选项有
-a 显示所有文件属性
-d 仅显示目录属性
-R 递归显示

4.4 umask应用

umask是默认指定目前用户在新建文件或目录时的权限默认值。执行umask 022 既可以设置当前用户的默认权限。直接执行umask命令就是查看当前系统的默认权限。需要注意的是,umask分数指的是该默认值需要剪掉的权限。因此r w x 分别是4 2 1 ,如果执行umask022 代表group和other被拿掉了权限2,也就是被拿掉了写权限。
如果执行命令umask 000 ,代表文件默认权限为777.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值