Linux用户权限管理与文件权限设定

一、相关概念

1、用户与角色分类

超级用户:拥有对系统的最高管理权限,默认是root用户。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。

虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等。

2、用户和组以及关系

一对一、一对多、多对一、多对多

3、用户和组相关的配置文件

/etc/passwd文件:系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。

/etc/shadow文件:用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限

/etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。

/etc/login.defs文件:用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

/etc/default/useradd文件:定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。

/etc/skel文件:目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。

二、相关命令 

1、添加、切换、删除用户组命令

(1)groupadd命令 用来新建一个用户组。语法格式为:

groupadd -g gid     #groupname -g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。

(2)newgrp命令 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换

(3)groupdel命令 表示删除用户组,语法格式为:

groupdel [群组名称]     #当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。

2、添加、修改和删除用户命令 

(1)useradd的使用语法:

useradd  [-u uid ] [-g group] [-G group,...]  [-d home] [-s shell] name

各个选项具体含义如下:

-u uid:即用户标识号,此标识号必须唯一。

-g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。

-G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。

-d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。

-s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。

(2)usermod用来修改用户的账户属性信息,使用语法如下:

usermod  [-u uid] [-g group] [-G group,...] [-d 主目录 ] [-s shell] [-L|-U] Name

各个选项具体含义如下:

-u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。

-g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。

-G group:修改用户所属的附加组。

-d 主目录:修改用户登录时的主目录。

-s shell:修改用户登录系统后默认使用的shell

-L:锁定用户密码,使密码无效。

-U:解除密码锁定。 userdel的使用语法 Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为: userdel [-r][用户帐号]

3、chown改变属主和属组     

chown就是change owner的意思,主要作用就是改变文件或者目录的所有者,而所有者包含用户和用户组,其实chown就是对文件所属的用户和用户组进行的一系列设置。 chown使用的一般语法为:

chown [-R] 用户名称 文件或目录

chown [-R] 用户名称:用户组组名称 文件或目录

参数说明: -R : 进行递归式的权限更改,也就是将目录下的所有文件、子目录都更新成为指定的用户组权限。常常用于变更某一目录的情况。 

4、chmod改变访问权限

chmod用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的字符设定法;另一种是包含数字的数字设定法。

(1)字符设定法 使用语法为:

chmod [who] [+ | - | =] [mode] 文件名

who表示操作对象,可以是下面字母中的任何一个或者它们的组合。

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“用户组(group)”,即文件或目录所属的用户组。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。它是系统默认值。

操作符号含义如下: “+”表示添加某个权限。“-”表示取消某个权限。“=”表示赋予给定的权限,同时取消文档以前的所有权限。

mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。

(2)数字设定法 使用语法为:

chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合]  文件名

0表示没有任何权限 1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。

2表示有可写权限,与“w”对应

4表示有可读权限,对应与“r“

三、 Linux用户与环境变量

当一个用户创建完毕,与之相关的环境变量也就创建了起来。

1、常见系统环境变量

PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL

我们常用  echo $[环境变量名]  来查看对应的环境变量信息,从下面的图我们也可以看出:PATH作用是指定命令的搜索路径;PWD是用来查看当前目录;SHELL是看当前Shell;HOSTNAME是查看主机名;LANG是默认语言。

2、定义环境变量

ENVIRON-VARIABLE=value      #环境变量赋值

export ENVIRON-VARIABLE      #声明环境变量

注意:环境变量可以在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,要让系统识别必须用export命令导出。

3、清除环境变量

unset 环境变量名

4、显示环境变量内容

env命令可以列出已经定义的环境变量

echo命令:    echo $环境变量名

5、环境变量与配置文件

/etc/profile属于全局环境变量配置文件

.bash_profile和.bashrc属于用户环境变量文件,此两个文件位于用户根目录下。     

当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。

Bash的初始化环境变量文件顺序:

环境变量配置文件使用原则:

跟用户相关的环境变量配置均配置到用户目录下面的配置文件中(.bash_profile、.bashrc),需要对全局生效的环境变量配置,都配置到/etc/profile文件中。 

6、演示

(1)怎么在现有路径上去添加一个新的路径,我们配置一个用户的环境变量,vi 进入.bash_profile文件,将定义的环境变量写入其中,保存退出。

(2) 配置文件环境变量文件后,执行source命令马上生效。这样我们就可以在任意路径下去执行JAVA_HOME/bin路径下对应的二进制文件了。

四、sudo命令的使用

1 、用途

类似 su 命令切换用户,但sudo的使用相比su命令更加灵活,试问在一个多人办公的情况下,如果每个人都需要使用root用户去执行管理员操作,那密码还有存在的必要么?在用户权限维护方面sudo使用会更多。

2、sudo相关权限文件配置

1、sudo命令的配置文件为/etc/sudoers,编辑这个文件有个单独的命令visudo(这个文件最好不要使用vim命令来打开),因为一旦语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:

who where whom command(指定哪个用户,在什么地方,以哪个用户的身份来执行,去执行什么命令)

2、/etc/sudoers文件默认给 root 用户定义了一条规则:

root    ALL=(ALL)       ALL     #root用户可以在任何主机以任何人的身份来执行所有的命令。

root表示 root 用户。

ALL表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。

(ALL)是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令。

ALL 表示任何命令。 

3、一些例子:

iivey   192.168.10.0/24=(root) /usr/sbin/useradd

上面的配置只允许iivey在 192.168.10.0/24 网段上连接主机并且以root权限执行useradd 命令。

www  ALL=(root)      NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

允许www用户执行所有命令,除了passwd后加任意字符、passwd root和su这三类操作。

%wheel  ALL=(ALL)       ALL

centos7默认已经开放组%wheel这一行,之前的centos版本没有启用。(批量设定权限,wheel是自带的一个组)。

%wheel        ALL=(ALL)       NOPASSWD: ALL  NOPASSWD: ALL

不输入密码执行任何命令 。

3、演示

(1)我们在root 用户下修改用户huoserver的权限,用 sudo 命令。

(2) 我们给huoserver用户在任何地方都赋予了root用户的任何权限。

(3)接下来我们切到huoserver用户下,在根目录下执行创建目录操作,发现权限不够;但是我们使用sudo命令,并且输入用户的密码,便可以成功执行在root用户下才可以执行的操作。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值