Linux账号和权限管理

目录

一、Linux账号

1、Linux用户账号类型

2、组账号

二、用户账号管理

1、文件位置

2、添加用户

3、密码管理

4、修改用户账号的属性

5、删除用户

6、用户账号的初始配置文件

三、组管理

1、组账号文件

2、添加组

3、组内管理

4、删除组账号

5、查询

四、文件/目录的权限和归属

1、chmod

2、chown

3、umask

4、文件的三种特殊权限

五、特殊权限 

访问控制列表 ACL


一、Linux账号

1、Linux用户账号类型

Linux中是通过UID号标识用户的类型,新建用户的UID号范围在1 ~ 60000之内,总共有65536个端口号即0 ~ 65535

 超级用户:root用户 ,UID=0

                root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户。

程序用户:UID = 1 ~ 499(CentOS 6版本以前),1 ~ 999(CentOS 7版本以后)

                CentOS 6与CentOS 7的区别:程序用户的UID号范围不同

                在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行,如 bin、daemon、ftp、mail 等

普通用户:UID = 500+(CentOS 6版本以前)   1000+(CentOS 7版本之后),若不指定用户的UID号,按顺序排。

                普通用户的账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。

1)在Linux中如何查看当前登录用户的信息

        who命令:whoami        who        who -b

Linux账号和权限管理_第1张图片

2)last命令

        用于显示用户最近在操作系统中的登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

选项:-x;-a;-f;-d;-n;-t

        (1)-x:显示系统开关机以及执行等级信息 

last        - x

Linux账号和权限管理_第2张图片

​第一列​: 用户名

​第二列​: 终端位置
​ pts: 意味着从SSH或TELNET的远程连接用户
​ tty: 意味着直接连接到计算机或者本地连接用户
 除了重启,所有状态会在启动时显示

​第三列​: 登录IP或者内核
​ 0.0或者什么都没有的话:意味着用户通过本地终端连接
​ 重启活动,会显示内核版本

​第四列​: 开始时间

​第五列​: 结束时间
​ still log in: 还在登录
​ down: 直到正常关机
​ crash: 直到强制关机

​第六列​: 持续时间
 

        (2)-a:将登陆ip显示在最后一行 

last        - a

Linux账号和权限管理_第3张图片


        (3)-f :读取特定文件,可以选择 -f /var/log/btmp文件 

last        - f        /var/log/btmp


        (4)-d:将IP地址转换为主机名 

last        - d

Linux账号和权限管理_第4张图片


        (5)-n:设置列出名单的显示列数 

last        - n        想要显示的列数

Linux账号和权限管理_第5张图片


        (6)-t:查看指定时间的用户登录历史 

last        - t        YYYYMMDDHHMMSS        # 年月日时分秒

  

 3)lastlog  查看所有用户的最近一次登录

lastlog   -u   用户名                # 查看指定用户

 lastlog    -t      天数:表示查看几天之内的用户登录信息

Linux账号和权限管理_第6张图片

2、组账号

基本组(私有组)

  • 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。

  • 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定

附加组(共有组)

除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定

基本组:有且唯一

附加组:可有可无,可以有多个

默认新建用户时自动添加同名的组

GID

GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。

  • root 组账号的 GID 号为固定值 0
  • 程序组账号的 GID 号默认为 1~499
  • 普通组默认使用的 GID 号为500~60000 

二、用户账号管理

1、文件位置

/etc/passwd

存放用户名称。宿主目录、登录Shell等基本信息

Linux账号和权限管理_第7张图片

root        用户名称

:x        密码占位符

:0        UID

:0        GID

:root        备注信息,描述

:/root        家目录路径

:/bin/bash (或:/sbin/nologin)       shell环境 

/etc/shadow        存放密码

该文档格式如下表格:

第n位 代表的含义
1 用户名
2 非明文密码,当该位置没有密码,为*或者!!时,表示该用户不饿能登录到系统
3 最后一次修改密码的时间
4 规定多长时间可以修改一次密码(0  没有限制)
5 密码有效期
6 提前多少天提醒用户,密码即将失效
7 宽限天数(密码过期后的宽限天数 )
8 账户失效的时间 (默认  永久)
9 保留字段收费内容(如vip用户,会被备注为VIP)

 

2、添加用户

useradd命令

格式:useradd        [选项]        用户名

如何验证用户创建成功:

        查看是否在 passwd和shadow文件中生成信息

  • 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录

  • 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。

  • 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账 号的记录信息将保存到/etc/group 和/etc/shadow 文件中。

选项:-u、-d、-e、-g、-G、-M、-s

-u:指定用户的UID号,要求该UID号码未被其他用户使用

-d:指定用户的宿主目录位置(当与 - M 一起使用时,-d命令不生效)

-e:指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式

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

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

-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录

-s:指定用户的登录Shell        一般将用户设置成/sbin/nologin的Shell模式会使用该选项

Linux账号和权限管理_第8张图片

 Linux账号和权限管理_第9张图片

 

3、密码管理

passwd命令        为用户账号设置密码

格式:passwd        [选项]        用户名

如果不加用户名,默认修改当前用户的密码

如果不加选项,可以添加密码

Linux账号和权限管理_第10张图片

 

 选项:-d、-l、-S、-u

-d:清空指定用户的密码,仅使用用户名即可登录系统

passwd        - d         用户名

Linux账号和权限管理_第11张图片

 

-l:锁定用户账户

passwd        - l        用户名

Linux账号和权限管理_第12张图片

 

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

passwd        - S        用户名

Linux账号和权限管理_第13张图片

 

-u:解锁用户账户

passwd        - u        用户名

Linux账号和权限管理_第14张图片

4、修改用户账号的属性

usermod命令

格式:usermod        [选项]        用户名

常见选项:- l 、- L 、- u 、- U 、- d 、- e 、- g 、- G 、- s

- l:更改用户账号的登录名称(Login  Name)

格式:usermod        - l        新用户名        旧用户名

Linux账号和权限管理_第15张图片

 

- L:锁定用户账号

格式:usermod        - L        用户名

Linux账号和权限管理_第16张图片

 

- u:修改用户的UID号

格式:usermod        - u        新UID        用户名

Linux账号和权限管理_第17张图片

 

- U:解锁用户账户

格式:usermod        - U         用户名

Linux账号和权限管理_第18张图片

 

- g:修改用户的附基本组名(或使用GID号)

格式:usermod        -g        新基本组名或新基本组的GID号        用户名

Linux账号和权限管理_第19张图片

 

- G:修改用户的附加组名(或使用GID号)

格式:usermod         -G         附加组名或附加组的GID         用户名

Linux账号和权限管理_第20张图片

 

- d:修改用户的宿主目录位置

格式:usermod        - d        新宿主目录位置        用户名 

Linux账号和权限管理_第21张图片

- e:修改用户的账户失效时间,可使YYYY-MM-DD的日期格式

格式:usermod        - e        新失效日期        用户名

Linux账号和权限管理_第22张图片

 

- s:指定用户的登录Shell

格式:usermod        - s        新Shell类型        用户名 

Linux账号和权限管理_第23张图片

5、删除用户

userdel命令

格式:userdel        [选项]        用户名

           userdel        - r        用户名

选项:- r        将宿主目录一起删除

Linux账号和权限管理_第24张图片

 

6、用户账号的初始配置文件

用户宿主目录下的初始配置文件只对当前用户有效

~/ .bash_profile

#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件        
~/.bashrc

#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)

~/.bash_logout

#此文件中的命令将在该用户每次退出时bash shell时使用

/etc/bashrc

三、组管理

1、组账号文件

与用户帐号文件相类似

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

/etc/gshadow:保存组帐号的密码信息基本不使用

2、添加组

groupadd命令

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

Linux账号和权限管理_第25张图片

 

3、组内管理

gpasswd 命令——添加、设置、删除成员

选项:- a、- d、- M

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

gpasswd        - a        用户名        组名

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

 gpasswd        - d        用户名        组名

Linux账号和权限管理_第26张图片

 - M:定义组成员列表,以逗号分隔(批量向组内加入用户)

gpasswd        - M        用户名,用户名,.....        组名

Linux账号和权限管理_第27张图片

 

4、删除组账号

groupdel 命令

groupdel        组账号名

Linux账号和权限管理_第28张图片

 

5、查询

finger 命令        w 命令        who 命令

finger :查询用户账号的详细信息

finger       [ 用户名 ]                # 不加用户名,默认查询当前用户的详细信息

Linux账号和权限管理_第29张图片

 

w 命令

w:查询一登陆到主机的用户信息

w        [ 选项 ]        [ 用户名 ]

-h    不显示输出信息的标题
-l    用长格式输出
-s    用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V    显示版本信息

Linux账号和权限管理_第30张图片

标题 含义
USER 登录到系统的用户。
TTY 登录终端。
FROM 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
LOGIN@ 用户登陆的日期和时间。
IDLE 表示某个程序上次从终端开始执行到现在所持续的时间。
JCPU 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
PCPU 当前进程所占用的 CPU 运算时间。
WHAT 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。

 

who 命令

相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。

whio        [ 选项 ]        [ file ]

注:who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息,但如果通过 file 指定另一个文件,则 who 命令将不再默认读取 /var/run/utmp 文件,而是读取该指定文件来获取信息。

选项 含义
-a 列出所有信息,相当于所有选项。
-b 列出系统最近启动的时间日期。
-l 列出所有可登陆的终端信息。
-m 仅列出关于当前终端的信息,who -m 命令等同于 who am i
-q 列出在本地系统上的用户和用户数的清单。
-r 显示当前系统的运行级别。
-s 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
-u 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
-T 或 -w 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。

四、文件/目录的权限和归属

程序访问文件时的权限,取决于此程序的发起者

  • 进程的发起者,同文件的属主:则应用文件属主权限

  • 进程的发起者,属于文件属组;则应用文件属组权限

  • 应用文件“其它”权限

例子 root用户和普通用户 是否都可以看 (cat /etc/shadow)

访问人群分为了三类

  • 所属主(u)

  • 所属组(g)

  • 其他人 (o)

权限分为三种

  • 读(r,4)

  • 写(w,2)

  • 执行(x,1程序,脚本)

对文件的权限

  • r 可使用文件查看类工具,比如:cat,可以获取其内容

  • w 可修改其内容

  • x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

对目录的权限

  • r 可以使用ls查看此目录中文件列表

  • w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关

  • x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

1、chmod

模式法:

chmod        u/g/o/a +/-/=r/w/x        文件名

u、g、o、a:所属者、所属组、其他人、所有人

+、-、=:增加、减少、仅赋予操作

r、w、x:读、写、执行权限

例:对文件夹abc的所有人增加执行权限

chmod        a+x        abc

Linux账号和权限管理_第31张图片

 数字法:

读权限(r)=4

写权限(w)=2

执行权限(x)=1

同上例:对文件夹abc的所有人增加执行权限

chmod        755        abc

Linux账号和权限管理_第32张图片

 

2、chown

chown:修改所属主的命令

格式:chown        用户:组名        文件名        # 修改所属主和所属组

Linux账号和权限管理_第33张图片

-R:递归修改

Linux账号和权限管理_第34张图片

 

3、umask

umask 的值可以用来保留在创建文件权限

实现方式:

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

Linux账号和权限管理_第35张图片 

root的umask 默认是 022

Linux账号和权限管理_第36张图片

 

4、文件的三种特殊权限

suid        SGID        Sticky

suid:表示当使用某个命令程序时,把当前用户当成文件的所属主

 [root@localhost aa]#which passwd 
/usr/bin/passwd
[root@localhost aa]#ll /usr/bin/passwd 
#此处s表示当使用这个命令程序时,把当前用户当成文件的所属主
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd
[root@localhost aa]#which vim
/usr/bin/vim
[root@localhost aa]#chmod u+s /usr/bin/vim
#给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件
[root@localhost aa]#ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim

SGID:表示当使用某个命令程序时,把当前用户所属的组当成文件的所属组

[root@localhost aa]#chmod g+s /usr/bin/vim
[root@localhost aa]#ll /usr/bin/vim
-rwxr-sr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim

Sticky 位        粘贴位        对文件夹有效        对文件无效

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

#Sticky权限设定:
chmod o+t DIR...
chmod o-t DIR..
[root@localhost aa]#chmod o+t /opt/aa
# 添加Sticky 位
[root@localhost opt]#chmod o-t /opt/aa 
#减少Sticky 位

五、特殊权限 

访问控制列表 ACL

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,       --modify-acl 更改文件的访问控制列表
-M,       --modify-file=file 从文件读取访问控制列表条目更改
-x,       --remove=acl 根据文件中访问控制列表移除条目
-X,       --remove-file=file 从文件读取访问控制列表条目并删除
-b,       --remove-all 删除所有扩展访问控制列表条目
-k,       --remove-default 移除默认访问控制列表
          --set=acl 设定替换当前的文件访问控制列表
          --set-file=file 从文件中读取访问控制列表条目设定
          --mask 重新计算有效权限掩码
-n,       --no-mask 不重新计算有效权限掩码
-d,       --default 应用到默认访问控制列表的操作
-R,       --recursive 递归操作子目录
-L,       --logical 依照系统逻辑,跟随符号链接
-P,       --physical 依照自然逻辑,不跟随符号链接
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
          --test 测试模式,并不真正修改访问控制列表属性
-v,       --version           显示版本并退出
-h,       --help              显示本帮助信息

你可能感兴趣的:(linux,运维,服务器)