Linux--账号和权限管理

Linux–账号和权限管理

前言:
Linux登陆需要用户名、密码。/etc/passwd 文件保存用户名。登录Linux时,Linux 先查找 /etc/passwd 文件中是否有这个用户名,没有则跳出,有则读取用户名的user ID 、 group ID 、用户名对应的根目录路径以及所使用的 shell ,最后在 /etc/shadow 中核对该 UID 对应的 PWD 是否正确,正确则登录到该用户的 shell。

一:用户账号和组账号概述

1.1:用户账号和组账号

1.1.2用户账号

超级用户(root,不可被替代)
普通用户(自己创建,取用户名)
程序用户(人无法登录,是给程序使用的,以使程序可以正常运转)
匿名用户(windows的guest,linux的nobody,普通用户中的最低权限用户)

1.1.2组账号

组账号(用户权限的集合)
基本组(私有组,伴随着用户的创建而创建,与用户同名)
附加组(公有组,直接创建一个空组,可以添加已有用户,给组设置相关权限,该组中的所有用户都具备此权限)

1.2:UID号和GID号

Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。

用户UID号
root用户固定值UID=0
程序用户UID 1—999
普通用户UID 1000–6万

1.3:用户账号文件/etc/passwd

系统中所有用户的账号信息都保存在“/etc/passwd”文件中,该文件是文本文件,任何用户都可以读取文件中的内容。

系统中新增加的用户账号信息会保存到passwd文件的末尾。

基于系统运行和管理的需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,但是可以被不法用户暴力破解,因此后来将信息转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”。

[root@localhost ~]# head -8 /etc/passwd  查看前8行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

passwd文件的每一行内容中,包含了七个用冒号“:”分隔的配置字段,我们需要了解其含义。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZbj8VPK-1593948247738)(C:\Users\LIU\AppData\Roaming\Typora\typora-user-images\image-20200705161506299.png)]

字段解释
用户账号用户账号的名称,也是登录系统时使用的识别名称
密码占位符表示自己有密码
用户账号ID(UID用户账号的UID号
组账号ID(GID所属基本组账号的GID号
用户说明用户全名,可以填写与用户相关的说明信息
宿主目录(家目录)该用户登录后所在的默认工作目录
登录Shell登录shell等信息,用户完成登录后使用的shell

1.4:组账号文件

1.4.1:/etc/group 和 /etc/gshadow

组账号文件也有两个,分别是/etc/group, /etc/gshadow。与用户账号文件非常类似。前者用于保存组账号名称,GID号,组成员等基本信息,后者用于保存组账号的加密密码字符串等信息(但是很少使用到)。

某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用逗号“,”分隔。

例如:查看root组包括哪些用户成员,哪些组中包含root用户。

检索root组包括哪些用户
[root@localhost ~]# grep "^root" /etc/group
root:x:0:

检索哪些组包括root用户
[root@localhost ~]# grep "root" /etc/group
root:x:0:

二:用户账号和组帐号管理

2.1:用户账号管理

切换用户:su 用户,保持路径不变
su - 用户,切换到当前用户的家目录
grep “bash$” /etc/passwd 查看当前可用用户
用户被锁定后,可以从高权限用户切换到普通用户,但是不可以用普通用户登录

2.1.1:useradd命令–添加用户账号

基本命令格式如下
useradd [选项] 用户名
常用选项有:
-u 指定用户的UID号,要求UID号码未被其他用户使用
-d 指定用户的宿主目录位置(当与 -M 一起使用时,不生效)
-e 指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-g 指示基本组
-G 指示附加组
-M 不建立宿主目录,即使/etc/login.defs系统配置中已设置要建立宿主目录
-s 指定用户的登录shell

例如:创建一个名为wangwu的账号(禁止终端登录),该账号将于2020.9.31失效。

[root@localhost ~]# useradd -e 2020-9-31 -s /sbin/nologin wangwu
   用户无法直接登录和被切换登录
2.1.2:passwd命令–设置/更改用户口令

创建一个用户,并设置密码且只输入一次,此功能在脚本中常用
useradd test01
echo “密码” | passwd --stdin test01 ‘免交互方式创建密码(stdin:输入)’

通过useradd创建一个账户后还需要设置密码才能够正常使用,使用passwd命令可以设置或修改密码。

passwd命令除了可以修改账号的密码外,还能对用户账号进行锁定,解锁,也可以将用户的密码设置为空(无需密码即可登录)。

使用命令基本格式
passwd [选项] 用户名

常用选项

-d			清空指定用户的密码,仅使用用户名即可登录系统
-l			锁定用户账户
-S(大S)    查看用户账户是否被锁定
-u			解锁用户账户

通过passwd命令锁定的用户账号,将无法再登录系统(shadow文件中的对应密码子串前将添加“!!”字符),只能由管理员来解除锁定。(还可以从root用户切换登录)

root用户有权限管理其他账号的密码(指定账号名称作为参数即可),不指定用户名时,修改当前账号的密码。普通用户只能执行单独的“passwd”命令修改自己的密码。

例如:执行“passwd wangwu“命令可以为wangwu账号设置登录密码

[root@localhost ~]# passwd wangwu

对于普通用户自行设置的密码,要求具有一定的复杂性(如不要直接使用英文单词,长度保持在六位以上)否则系统可能拒绝进行设置。普通用户设置自身的登录密码时,需要先输入旧的密码进行验证。

例如,普通用户设置自身的密码

[wangwu@localhost~]$passwd
2.1.3:usermod命令–修改用户账号的属性

对于系统中已经存在的用户账号,可以使用usermod命令重新设置各种属性。usermod命令同样需要指定账号名称作为参数。

命令使用基本格式
usermod [选项] 用户名
常用选项

-l		更改用户账号的登录名称(Login Name)
-L		锁定用户账户	
-U		解锁用户账户
-u		修改用户的UID号
-d		修改用户的宿主目录位置
-e		修改用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-s		指定用户的登录shell	

我们发现,usermod命令大部分和useradd命令的选项时相对应的,作用也相似。

usermod两个选项“-L”’-U’分别用于锁定,解锁用户账户

passwd两个选项’-l’ '-u’也分别用于锁定,解锁用户账户 两者存在大小写区别

2.1.4userdel命令–删除用户账号

命令使用基本格式
userdel [-r] 用户名

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

2.1.5:用户账号的初始配置文件

添加一个新的用户账号后,useradd会在该用户的宿主目录中建立一些初始配置文件。这些文件来自账号模板目录’/etc/skel’,基本上都是隐藏文件。

主要的用户初始配置文件解释
~/.bash_profile文件中的命令将在每次用户登录时执行
~/.bashrc文件中的命令会在每一次加载’/bin/Bash’程序时(当然也包括登录系统)执行
~/.bash_logout文件中的命令将在每一次用户退出登录的时候执行
上三个都是针对用户的,用户一旦切换,就不会生效
~/etc/profile针对系统的,不管切换到哪个用户都会生效

因此,在’.bashrc’等文件中,我们可以添加自定义的可执行语句(Linux命令行,脚本控制语句等)来自动完成相应的任务。

2.2:组帐号管理

2.2.1:groupadd命令 --添加组账号

需要指定GID号时,可以使用’-g’选项。

命令执行基本格式
groupadd [-g GID] 组账号名
[root@localhost ~]# groupadd -g 1000 caiwu

2.2.2:gpasswd命令–添加删除组成员

设置组账号密码(极少用),添加/删除组成员

命令使用基本格式
gpasswd [选项] 组账号名

常用选项
-a 向组内添加一个用户
-d 从组中删除一个用户成员
-M 定义组成员列表,以逗号分隔

一定注意:如果用了-M,就是对组列表的覆盖。
-M需要首次使用,后面不能再次使用。
首次使用了-M后,再次添加用户需要使用-a

2.2.3:groupdel命令–删除组账号

使用命令基本格式
groupdel 组账号名
例如

[root@localhost ~]# groupdel caiwu
2.2.4:查询账号信息

在用户管理工作中,虽然直接查看用户账号,组账号的配置文件也可以查询相关信息,但不是很乐观。在Linux系统中,还可以使用几个常用的命令查询工具。

id命令:查询用户账号的身份标识

使用id命令可以快速查看指定用户账号的UID,GID等表示信息。

id命令基本格式
id [用户名] 查询用户身份标识

[root@localhost ~]# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)

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

groups命令可以查看指定的用户账号属于哪些组

[root@localhost ~]# groups zhangsan 查看zhangsan用户所属组
zhangsan : zhangsan
[root@localhost ~]# groups  查看当前用户所属组
root

groups命令使用格式
groups [用户名] 查询用户所属的组

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

finger命令可以查询指定的账号的登录属性等详细信息,包括登录名称,完整名称,宿主目录,登录shell等。

finger命令使用格式
finger [用户名] 查询用户账号的详细信息

[root@localhost ~]# finger zhangsan
Login: zhangsan       			Name: 
Directory: /home/zhangsan           	Shell: /bin/bash
Last login 日 7月  5 15:40 (CST) on pts/2
No mail.
No Plan.

w,who,users命令:查询已经登录到主机的用户信息

[root@localhost ~]# w
 18:11:36 up  5:33,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    20.0.0.1         17:09    0.00s  0.10s  0.03s w
root     pts/2    20.0.0.1         15:12    1:57m  0.26s  0.03s -bash

[root@localhost ~]# who
root     pts/1        2020-07-05 17:09 (20.0.0.1)
root     pts/2        2020-07-05 15:12 (20.0.0.1)

[root@localhost ~]# users
root root

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

lastb 命令 查看最近登录的历史记录

[root@localhost ~]# lastb

btmp begins Sun Jul 5 11:20:01 2020

三:文件、目录的权限和归属

3.1:查看文件、目录的权限和归属

3.1.1:访问权限
读取r允许查看文件内容,显示目录列表
写入w允许修改文件内容,允许在目录中新建,移动,删除文件或子目录
可执行x允许运行程序,切换目录
3.1.2:归属
类型解释
属主拥有该文件或目录的用户账号
属组拥有该文件或目录的组账号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zb2VQjUi-1593948247741)(C:\Users\LIU\AppData\Roaming\Typora\typora-user-images\image-20200705182122961.png)]

  • 我们可以使用-rwxrwxrwx来表示权限也可以用777来表示权限。
  • rwx采用累加数字形式表示成 7 , r-x 表示成 5 , rwxr-xr-x 表示成755,rw-r–r–表示成644
  • 数字固定不会变,一个普通的数据文件没有执行权限。

3.2:设置文件、目录的权限和归属

3.2.1:chmod命令–设置文件权限
chmod命令使用基本格式
chmod [ugoa] [+-=] [rwx] 文件或目录	  (不常用)	(u,g,o,a分别表示属主,属组,其他用户,所有用户)(+-=分别表示增加,去除,设置权限)
或
chmod nnn 文件或目录	  (最常用)	(nnn表示三位八进制数字,如刚刚提到的 777,755,644等)

常用选项
-R		递归修改指定目录下所有子项的权限

6.2 文件权限目录权限小结:

 文件权限:(更多关注一定要有read权限)
     read 读文件内容的能力  (有了读文件block能力)
     write 写文件内容的能力(有了读文件block能力)  重命名文件???
     execute 执行文件的能力(脚本文件)
     补充: 文件是否可以编辑查看,和上一级或上n级目录有关
     读取文件数据原理 / oldboy/ oldboy01/ oldboy.txt
 目录权限:(更多关注一定要有x执行权限)
 read 读取目录下文件属性信息
 write 可以在目录中创建或删除数据
 execute 可以切换进入到目录中

3.3.4:权限掩码 umask

umask作用
控制新建的文件或目录的权限
默认权限去除umask的权限就为新建的文件或者目录的权限
umask设置命令格式
umask 000(000指数字)

umask查看
umask

umask的分数指的是“该默认值需要减掉的权限,”因此,如果执行“umask 022”,代表group和other被拿掉了权限“2”,也就是被拿掉了写的权限。

如果执行命令“umask 000”,代表文件的默认权限是“777”

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

如何修改Umask值呢?
1、临时修改 umask 066 (这个066根据的根据的需求定,可以理解成反子网掩码,这个是临时的)
2、永久修改 vi /etc/bashrc 最后一样插入umask 066 (这个是永久生效的)
[root@localhost tmp]# vim /etc/profile
两个文件的内容是一样的
搜索umask,找到如下代码,不算第一位的特殊权限

[root@localhost ~]#  vim /etc/profile

You could check uidgid reservation validity in

/usr/share/doc/setup-*/uidgid file

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002         ###表示uid大于等于199的默认umask值,表示普通用户
else
                                                    55,23         76%
                    umask 022	####表示uid小于199的默认umask值,表示root

修改后需要重新读取一下
/etc/bashrc或/etc/profile

常用的是700 755 最大权限是777
默认文件夹 755
默认文件 644

[root@localhost ~]# cd /opt
[root@localhost opt]# umask 066
[root@localhost opt]# touch a.txt
[root@localhost opt]# ls -l
总用量 40960
-rw-------. 1 root root 0 7月 5 19:00 a.txt 644 -066=600
-rw-rw-r–. 1 zhangsan zhangsan 41943040 7月 5 15:38 test01.txt
[root@localhost opt]# mkdir a
[root@localhost opt]# ls -l
总用量 40960
drwx–x--x. 2 root root 6 7月 5 19:01 a #由默认的755改成711
-rw-------. 1 root root 0 7月 5 19:00 a.txt
-rw-rw-r–. 1 zhangsan zhangsan 41943040 7月 5 15:38 test01.txt

[root@lewis ~]# source /etc/profile
[root@lewis ~]# source /etc/bashrc

常用的是700 755 最大权限是777
默认文件夹 755
默认文件 644

6=600
-rw-rw-r–. 1 zhangsan zhangsan 41943040 7月 5 15:38 test01.txt
[root@localhost opt]# mkdir a
[root@localhost opt]# ls -l
总用量 40960
drwx–x--x. 2 root root 6 7月 5 19:01 a #由默认的755改成711
-rw-------. 1 root root 0 7月 5 19:00 a.txt
-rw-rw-r–. 1 zhangsan zhangsan 41943040 7月 5 15:38 test01.txt

[root@lewis ~]# source /etc/profile
[root@lewis ~]# source /etc/bashrc

常用的是700 755 最大权限是777
默认文件夹 755
默认文件 644

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值