一、          
Linux系统用户和用户组相关文件

1、  /etc/passwd文件

这个passwd文件是Linux用户信息文件。文件格式说明如下:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

……………………………………………..

……………………………………………..

hadoop:x:500:500::/home/hadoop:/bin/bash

文件中每一行是一个用户,各列以:分割,各列的含义如下:

l  第一个是用户名称

l  第二个是密码,但是这个字段现在已经不用了,密码存在在/etc/shadow文件中了,所以这里固定写x就是了。

l  第三个是UID,UID是用户的唯一标示。

UID

说明

0

是系统管理员的UID

1~499

是系统用户的UID

500 ~ 65535

是一般用户使用的UID,Linux 2.6.x内核可以支持最大UID为2^32-1

l  第四个是GID,是指用户所在的首选组的ID,和/etc/group文件里的组ID对应。

l  第五个是用户信息说明信息,默认是和用户名一样的值。

l  第六个是用户的Home目录路径。

l  第七个是用户默认的Shell路径,Linux的Shell类型很多,但是大多数是/bin/bash。

2、  /etc/shadow文件

这个shadow文件是用户密码信息文件,文件格式说明如下:

root:$6$QDRTibzVfjM.GBM7$AwsFKXFBGdKxHf7NzSN3Evu5NBtUoNSDt2bw/aXdcnQOK5N9kKJqPZ6uGFE3C9zasUl9UwrgJhzF7rAPJXkXl/:16981:0:99999:7:::

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

hadoop:$6$MiYjLlgY$Oqrs15mLyzULRD.m4e2WmTEp9Aq.CziOhpCXW.U4LypK4wfQKww/RR6re3L0r.hOB2IZpc1zTyHGH9vpy9bKh1:16982:0:99999:7:::

文件中每行是一个用户,每行用:分割形成9个列。以下是各个列的说明:

l  第一列是用户名,用户名与/etc/passwd文件中的用户名对应。

l  第二列是密码。密码是经过加密过的,系统不同计算规则不同。

l  第三列是最后一次修改密码的日期,这里是16982,意思是从1970-01-01那天之后16982天的日期。

l  第四列是密码不可更新的天数,就是在设置密码后,N天之内不能再次修改,防止频繁修改密码,如果是0,就是随时可以修改密码。

l  第五列是密码必须修改的天数,就是在设置密码后,N天后必须修改密码,不然会变成过期状态。这里是一堆九,大约是273年。

l  第六列是密码更改必须修改前多少天发出警告,这里是7天。

l  第七列是密码过期后N天内还可以使用,不过过期后使用时会强制要去修改密码,如果在过期N天后还没有修改密码,那账号就不能再使用了。

l  第八列是账号失效时间,指定日期之后,就无法再使用了。

l   第九个是预留的列,暂时没用。

3、  /etc/group文件

这个group文件是记录用户组信息的,文件格式如下:

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

hadoop:x:500:

文件中一行是一个用户组,每行用:分割为四列:

l  第一列为组名称

l  第二列为组密码,组密码已经移动到/etc/gshadow文件中了,所以这个固定是x。

l  第三列是GID,是用户组的唯一ID,/etc/passwd用户信息中的第四个字段就对应于这里的GID。

l  第四列是这个用户组下的用户名称,多个用户名以逗号分割,如果想将某个用户添加到一个组中,就在目标组这一行,添加上这个用户名。

4、  Linux用户登录流程

当一个客户端使用用户名、密码登录Linux系统时,Linux系统会按照以下流程进行验证:

(1)   
寻找/etc/passwd文件中是否有此账号,没有就报错。

(2)   
如果有就读取这个用户对应的UID、GID、shell设置信息。

(3)   
然后拿着UID去/etc/shadow文件中验证密码。

(4)   
验证通过后,就进入对应的shell环境。

二、          
Linux用户管理、用户组管理

1、 添加用户

(1)   
useradd 用户名
是添加一个用户,用户的各个信息采用默认值。

(2)   
新用户的默认值可以用
useradd –D 命令来查看

[root@localhost ~]# useradd -D

GROUP=100     默认的用户最GID

HOME=/home 默认的Home目录路径

INACTIVE=-1    默认的密码失效日,为-1是永远不会失效

EXPIRE=   账号失效日

SHELL=/bin/bash   用户默认使用的shell

SKEL=/etc/skel  用户Home目录的内容模板目录

CREATE_MAIL_SPOOL=yes      是否主动创建邮箱

(3)   
useradd 用户名
命令执行后,没有指定密码,所以新用户状态是被封锁的,用户无法登陆,需要设置密码。

2、 设置密码

(1)   
passwd 用户名
是为指定用户修改密码,如果只有passwd,就是修改当前用户的密码。

(2)   
关于密码长度和复杂度要求,root可以设置任何长度和复杂度的密码,但是用其他账号是不允许设置短密码和低复杂度的密码的。

3、 修改用户

修改用户信息用usermod命令,各个参数如下:

-c  :后面接用户的说明,即 /etc/passwd 第五列的说明列,可以加入一些用户的说明。

-d  :后面接用户的Home目录,即修改 /etc/passwd 的第六列;

-e  :后面接日期,格式是 YYYY-MM-DD 也就是在
/etc/shadow 内的第八列!

-f  :后面接天数,为 shadow 的第七列。

-g  :后面接初始用户组,修改 /etc/passwd 的第四个列,即是 GID 的列!

-G  :后面接次要用户组,修改这个使用者能够支援的用户组,修改的是 /etc/group

-a  :与 -G 合用,可‘增加次要用户组的支援’而非‘设定’!

-l  :后面接用户名称。是修改用户名称, /etc/passwd 的第一列!

-s  :后面接 Shell 的实际档案,例如
/bin/bash 或 /bin/csh 等等。

-u  :后面接 UID 数字!即
/etc/passwd 第三列的资料;

-L  :暂时将使用者的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码列。

-U 
:将 /etc/shadow 密码列的

4、 删除用户

userdel命令是用来删除用户。

userdel –r 用户名
是将用户和用户相关的所有数据全部删除。

三、          
Linux文件权限管理

1、 Linux中文件权限划分

Linux系统中的目录和文件的访问身份分为三类:owner、group、others,分别简写为:o、g、o

l  owner是文件的所有者。

l  group是文件所有者所在组的其他成员。

l  others就是不在所有者的所在组的其他用户。

每个身份对文件的权限又分为:read、write、execute。分别简写为:r、w、x,数字表示分别为:4,2,1

2、 ls –s 命令显示的信息

[root@localhost
~]# ls -l

total
104

drwxr-xr-x.
2 root root  4096 Jun 30 01:55
Downloads

-rw-r--r--. 1 root root 50010 Jun
30 01:40 install.log

显示的结果信息,一行是一个目录或者一个文件,每行用空格分隔为七列:

l  第一列是权限信息:这部分的类似于 drwxr-xr-x 可以分为四部分:

(1)   
第一个字符是表示文件类型,可以为以下几种类型

字符

含义

字符

含义

-

文件

b

存储设备,如硬盘

d

目录

c

串口设备,如键盘、鼠标

l

链接文件

(2)   
剩下的9个字符,可以平均分为三组,每组三个字符,字符由rwx-是个字符组成,分别代表是否有读取、写入、执行、无任何权限。

(3)   
第一组定义了文件所有者对文件所拥有的权限

(4)   
第二组为同用户组的用户对文件所拥有的权限

(5)   
第三组为其他组用户对文件所拥有的权限

l  第二列是连接信息

l  第三列是所有者是哪个用户

l  第四列是文件所属用户组,一个所有者用户可能会属于多个组,这个属性是表面文件属于哪个组。

l  第五列是文件大小,单位默认是Byte。

l  第六列是最后修改日期,如要显示完整的时间格式,ls命令可以用参数 –l –full-time

l  第七列是目录名或者文件名。如果名字前面有个.就说明这个是一个隐藏文件。

3、 修改文件的权限

(1)   
修改文件的权限用命令chmod来执行,有两种权限定义方式:数据方式和符号方式。

(2)   
数字方式修改文件权限

像上面说说的,用三组rwx字符就可以表述出文件的owner、group、others三种身份的用户所拥有的权限信息。

而read用4表示,writer用2表示,execute用1表示;rwx可以用[4+2+1]=7表示。r-x可以用[4+1]=5表示。

那么某一个文件的三个身份的权限信息就可以用三个数字表示。

例如:要将1.sh文件的权限设置为所有者可读可写可以执行,同组可读可执行不可写,其他组的用户没有权限。

chmod    750   
1.sh

(3)   
符号类型修改文件权限

chmod

u

g

o

a

+  (增加)

-       
(减去)


(设置)

r

w

x

文件或者目录

例如:要将1.sh文件的的其他组用户添加可读权限:chmod    o+r 1.sh

例如:要将1.sh文件的的所有用户添加可执行限:chmod    a+x  1.sh

4、 修改文件的所有者

(1)   
修改文件的所有者用命令
chown 用户名  文件/目录

(2)   
修改文件的所属组命令chgrp 用户组   文件/目录

(3)   
修改文件的所有者和所属组用命令  chown  用户名:用户组    文件/目录

5、 目录权限和子文件权限关系

附件列表

最新文章

  1. WCF学习之旅——第一个WCF示例(二)
  2. 【Python数据分析】从Web收集数据小实例
  3. PHP实现无级递归分类(ThinkPHP框架)
  4. for循环中使用了return
  5. IEnumerable
  6. 在非gui线程使用QMessageBox
  7. RAW模板命名规范
  8. 【JQuery】Could not find action or result No result defined for action
  9. 调用一个系统命令,并读取它的输出值(使用QProcess.readAll)
  10. Android.mk中的经常使用语法
  11. robotframework的学习笔记(十五)----robotframework标准库Collections
  12. python笔记一(语言简介、解释器、输入输出)
  13. SUSE12SP3-Mycat(2)Schema.xml配置详解
  14. python中元组/列表/字典/集合
  15. Java-字符串、集合
  16. GIL 全局解释器
  17. IPv4和IPv6的差异;如何实现IPv4和IPv6双协议栈的通信
  18. Python3基础 str translate 将指定字符转换成另一种特定字符
  19. 拖拽进度条(SeekBar)
  20. Java中short、int、long、float、double的取值范围

热门文章

  1. [原创]关于Hibernate中的级联操作以及懒加载
  2. SpringMVC+Shiro权限管理【转】
  3. JAVA环境变量和TomCat服务器配置
  4. 深入理解 Android 之 View 的绘制流程
  5. git和pycharm管理代码
  6. Atitit.软件开发的三层结构isv金字塔模型
  7. 【一起学OpenFOAM】03 OpenFOAM基本使用流程
  8. 微信官方开源UI库-WeUI
  9. Lesson 17 Always young
  10. 前端构建大法 Gulp 系列 (一):为什么需要前端构建