当前位置:   article > 正文

linux用户组有那三种,Linux基础知识--4.LInux用户和用户组以及权限管理

linux的组分为三类

Linux基础知识--4.LInux用户和用户组以及权限管理

一.Linux用户和用户组

Linux操作系统是一个多用户、多任务的操作系统。有时可能多个用户在linux系统上操作一个任务,有时可能完成多个任务。用户的主要作用就是完成用户本身要完成的任务,不同用户所具有的权限也不同,所以能完成的任务也是有不尽相同。组:个人理解就是将用户和权限关联在一起的“容器”,我们可以把执行相同任务的用户加入同一个组内。

当登录linux系统时要输入linux用户账号,但是linux主机不会是认识你的“账号名称”,它只会识别用户的ID号,每个登录系统的用户至少要包括两个ID,一个是用户ID(UID),另一个是组ID(GID)。

1. 在linux系统中用户可分为三类:根用户(管理员用户),系统用户和普通用户。

根用户root用户:可以操作系统任何文件和资源,拥有最高权限。

root:UID为0 GID为0

系统用户:这类用户不具有登录系统的能力,但是系统运行不可缺少的用户,比如bin、daemon、ftp、mail等。这类用户都是系统自身拥有的,而非后来添加。当然后续添加也行。

系统用户的UID:1-499 但是在CentOS7上UID是:1-999

GID:1-499 CentOS7上GID为:1-999

普通用户:这类用户是用来登录系统,有自己的家目录,但是权限有限。

普通用户的UID为500+ 在CentOS7上UID为:1000+

GID:500+ CentOS7上GID为:1000+

2.Linux用户组:

linux组的分类:基本组,私有组和附加组(也称额外组)

基本组:linux在创建用户的时候会同时创建和用户名相同的组,这个组就是基本组,不能把用户从这个组删除。

附加组:附加组也称额外组,是除基本组之外用户所在的其他组。用户可以从附加组中删除。

私有组:私有组就是一个linux用户的基本组在没有其他用户添加到此组,就称基本组属于这个用户的私有组。

3.linux中和用户、组相关的配置文件及文件内容的意义:

/etc/passwd:用户及其属性信息

/etc/shadow:用户密码及其相关信息

/etc/group:组及其属性信息

/etc/gshadow:组密码及其相关信息

1./etc/passwd文件中各字段含义:

用户名:密码:UID:GID:用户注释信息:用户家目录:默认shell

apache:x:48:48:Apache:/var/www:/sbin/nologin

2./etc/shadow文件中个字段的含义:

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

用户名:加密之后的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期        限:密码警告时间段:密码过期恕限时间:账户过期时间:保留字段

注意:最近一次更改密码的日期:是从1970年1月1日到最近一个修改密码的天数。

密码最小使用期限:便是两次修改密码之间所需的最小天数,0表示没有。

密码最大使用期限:指的是密码保持有效的天数。

密码警告时间段:表示从系统警告用户到用户密码正式失效的天数。

密码过期恕限时间:如果用户过了警告时间仍没有从新设定密码,致使密码失效。用户仍然可以使用这个失效的密码在n天内登陆系统,若在这个期间人没有更改密码,则账号失效。

3./etc/group文件中各字段的含义:

bin:x:1:bin,daemon

组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)

4./etc/gshadow文件中各字段的含义:

bin:::bin,daemon

组名:组密码:组管理者:组成员

4.linux 用户和组相关的管理命令:

(1)用户创建:useradd

useradd [options] LOGIN

常用选项:

-u UID:指定UID

-g GID:指定GID

-c "COMMENT":用户注释信息

-d directory:指定用户的家目录

-s SHELL:指定用户的shell

-G group1,group2,...:指定用户的附加组,组事先要存在

-r:创建系统用户

和用户创建相关的一些文件和目录:

/etc/login.defs /etc/shells /etc/skel /etc/default/useradd

/etc/login.defs:此文件是创建用户时的一些限制,比如可以配置密码的最大过期天数,密码 最大长度等。该文件对root用户无效。

/etc/shells:该文件存在当前系统支持的shell

/etc/skel:该目录下存放了一些隐藏文件和目录。在建立用户时,用户初始化用户根目录。系 统会将此目录下的所有文件和目录都复制到新建用户的根目录,并且将用户的属主与用户组调整为与此根目录相同。

/etc/default/useradd:通过useradd添加用户时的规则文件。

(2)删除用户:userdel

useradd [options] login

useradd -r UserName:连同用户的家目录一并删除

(3)用户属性的修改:usermod

usermod [OPTION] login

常用选项:

-u UID:修改UID

-g GID:修改GID

-G group1,group,..:新附加组,原来的附加组将覆盖,如果不想覆盖使用-a选项,表append

-s shell:指定新的shell

-c "COMMENT":新的注释信息

-d HOME:修改家目录,一般和-m选项连用。表示将原有家目录的内容一直新的家目录中

-l Login_name:修改用户名

-L:锁定用户

-U:解锁用户

-e YYYY-MM-DD:指明用户账号过期日期

-f INACTIVE:设定非活动期限

(4)给用户添加密码:passwd

passwd [OPTIONS] UserName:修改指定用户的密码,仅root用户权限

passwd :修改当前登录系统用户的密码

常用选项

-l:锁定指定用户

-u:解锁指定用户

-n mindays:指定密码最短使用期限

-x maxdays:指定密码最大使用期限

-w warndays:指定提前多少天开始警告

-i inactivedays:非活动期限

--stdin:从标准输入接收用户密码:

eg:echo "PASSWORD" | passwd --stdin USERNAME

(5)组创建:groupadd

groupadd [OPTION]... group_name

常用选项:

-g GID:指明组ID

-r:创建系统组

(6)删除组:groupdel

groupdel GroupName

eg: groupdel admingroup

(7)组属性修改:groupmod

groupmod [OPTION].. group

常用选项:

-n group_name:修改组名

-g GID:修改组ID

(8)组密码创建:gpasswd

让某个用户组具有一个管理员,这个用户组管理员能够管理那些账号可以加入/移除该用户组。

gpasswd [option] group

常用选项:

-a user:将user添加至指定组中

-d user:删除用户user的以当前组为组的附加组

-A user1,user2,...:设置有管理权限的用户列表

其中newgrp命令是临时切换到一个加密组中,如果用户本不属于此组,则需要组密码

(9)修改用户属性:chage

chage [OPTION]... LOGIN

常用格式:

-l:列出用户密码的相关信息:

-m mindays:修改密码的最小天数

-M maxdays:修改密码的最大天数

-I:密码过期后,锁定账号的天数

-d:指定密码最后修改的日期

-E:有效期,0表示立即过期,-1表示永不过期

-W:密码过期前,开始警告的天数。

(10)还有其他命令:chsh,finger,chfn。

chsh:修改用户的shell

chfn:change your finger information

finger:finger - user information lookup program

# finger zkc

Login: zkc            Name: Personal

Directory: /home/zkc                Shell: /bin/bash

Never logged in.

No mail.

No Plan.

二.Linux 权限管理

Linux的文件权限主要针对三类对象:属主(u),属组(g),其他(o)

每个文件针对每类访问者都定义了三类权限:读r,写w,执行x

我们可以使用ls -la查看某个文件的属性和文件名。如:[root@localhost ~]# ls -la

total 64

dr-xr-xr-x. 21 root root 4096 Aug 15 22:37 ..

-rw-------.  1 root root 1201 Aug 14 21:19 anaconda-ks.cfg

-rw-------.  1 root root 2138 Aug 15 22:36 .bash_history

-rw-r--r--.  1 root root   18 May 20  2009 .bash_logout

-rw-r--r--.  1 root root  176 May 20  2009 .bash_profile

-rw-r--r--.  1 root root  276 Aug 14 21:51 .bashrc

分别表示文件的类型和文件的权限,连接数,属主,属组,文件大小,文件最后被修改的时间,文件名。

1.文件的类型有一下几种:

-:普通文件。

d:目录文件。

l:连接文件

b:块设备文件.

c:字符设备文件

s:套接字文件

p:管道文件

2.文件对应属主,属组和其他的属性:rwx

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7

目录和文件的权限意义:

1.权限对文件的意义:

r:可读取文件的内容,可以用文件查看类工具获取其内容

w:可以编辑,新增或者修改文件内容(但不包含删除)

x:该文件具有可执行的权限。可以把此文件提请内核启动为一个进程。

2.权限对目录的意义:

r:表示具有读取目录结构列表的权限。可以使用ls命令查看目录下的文件列表

w:这个可写入的权限对目录来说很强大。表示具有更改该目录结构列表的权限,包括:

新建新的文件与目录

删除已经存在的文件或目录(不论该文件的权限为何)

将已经存在的文件或目录进行重命名

转移该目录内的文件,目录位置

x:可以使用ls 命令查看目录下的文件列表,以及可以用cd转换到此目录下。

修改文件和目录权限:chmod

chmod [OPTION]... MODE FILE

-R:可递归修改权限

修改一类用户的所有权限:如:

a=rwx,u=rwx,g=rwx,o=rwx

uo=rw...

此类修改权限之后将会把以前的权限覆盖

eg:

438b39e1c4073e6b3d5d3dac5e80d8e3.png

修改一类用户的某些位的权限:

u+rwx u-rwx o+x a+x 等。。

eg:[root@localhost ~]# ll a.txt

-r-xr--r-x. 1 root root 6 Aug 16 03:04 a.txt

[root@localhost ~]# chmod a+w a.txt

[root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

chmod [OPTION]... --reference=Rfile File...

查看Rfile文件的权限,将File文件的权限修改为同Rfile.

eg:[root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

[root@localhost ~]# vim b.txt

[root@localhost ~]# ls -l b.txt

-rw-r--r--. 1 root root 6 Aug 16 03:34 b.txt

[root@localhost ~]# chmod --reference=a.txt b.txt

[root@localhost ~]# ls -l b.txt

-rwxrw-rwx. 1 root root 6 Aug 16 03:34 b.txt

修改文件和目录的属主和属组:chown(仅root用户)

chown [OPTION]... [OWNER][:[GROUP]] FILE...

-R:可递归修改权限

用法:chown owner file

chown owner:group file

chown :group file

chown [OPTION]... --reference=RFile File...

修改文件File的属主属组同Rfile的属主属组

eg:[root@localhost ~]# chown zkc.zkc a.txt

[root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 zkc zkc 6 Aug 16 03:04 a.txt

[root@localhost ~]# chown --reference=b.txt a.txt

root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

修改文件的属组:chgrp

chgrp [OPTION]... GROUP File

chgrp [OPTION]... --reference=Rfile File...

eg:[root@localhost ~]# chgrp zkc a.txt

[root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 root zkc 6 Aug 16 03:04 a.txt

[root@localhost ~]# chgrp --reference=b.txt a.txt

[root@localhost ~]# ll a.txt

-rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

文件或目录创建时的遮罩码:umask

对文件:创建文件时的权利:666-umask

如果某类用户的权限减得结果中存在x权限,将其权限加1.

相对目录:777-umask

Linux文件系统上的特殊权限:SUID,SGID,Sticky

1.通过前面学习Linux文件系统有普通权限:r,w,x

2.Linux中的安全上下文:

前提:进程必须有属主和属组。也就是文件有属主和属组

a.任何一个可执行程序文件是否能能够执行,成为进程,取决于对这个文件发起者对这个文件是否拥有执行的权限。

b.启动为程序之后,其进程的属主为发起者,进程的属组为发起者所属的组

c.进程访问文件时的权限,取决于进程的发起者。

1.进程的发起者属于文件的属主;则使用文件属主的权限

2.进程的发起者属于文件的属组;则使用文件属组的权限

3.有文件'其他'的权限

3.SUID:

任何一个可执行程序文件是否能启动为进程,取决于一个程序文件是否拥有执行的权限。

可执行程序文件启动为进程之后,其进程的属主为源文件的属主(而不再属于发起者)

权限设置:

chmod u+s File..

chmod u-s File..

s这个标志出现在文件所有者的x权限上的。

SUID权限只对二进制程序有效

执行者对已该程序需要具有x的执行权限

本权限仅在执行程序的过程中有效。

eg:命令chmod只能root用户才能使用,虽然chmod的二进制文件的权限为:-rwxr-xr-x;

但是普通用户还是不能执行此命令!!如:[root@localhost tmp]# ls -l /bin/chmod

-rwxr-xr-x. 1 root root 50048 Nov 22  2013 /bin/chmod

[zkc@localhost tmp]$ whoami

zkc

[zkc@localhost tmp]$ chmod a+w test.sh

chmod: changing permissions of `test.sh': Operation not permitted

为此二进制文件添加s权限,再次执行以下,结果如下:[root@localhost tmp]# chmod u+s /bin/chmod

[root@localhost tmp]# ls -l /bin/chmod

-rwsr-xr-x. 1 root root 50048 Nov 22  2013 /bin/chmod

切换到普通用户:

[zkc@localhost tmp]$ chmod a+w test.sh

[zkc@localhost tmp]$ ls -l test.sh

-rwxrw-rw-. 1 root root 40 Aug 16 04:49 test.sh

/bin/chmod添加s权限后,普通用户能够执行命令chmod,这只是普通用户"暂时"拥有root的权限。

4.SGID:

常用功能:

a.设置在目录上:

1.默认情况下,用户创建文件时,其属组为此用户所属的基本组;一旦某目录被设定了SGID的权限,则对此目录有写权限的用户,在此目录中所创建文件的属组就为此目录所属的属组!!          2.如果用户对此目录有r和x权限,用户还可以进入此目录中。

b.针对文件进行设置:SGID对二进制程序有用,二进制文件的执行者需要有x权限。当执行者执行此二进制程序文件时,执行具有该程序用户组的权限:

权限设定:

chmod g+s File/DIR

chmod g-s File/DIR

eg:在/tmp目录下创建一个目录kk。在没有向kk目录设置g+s权限时,普通用户(此普通用户对此目录有写权限)在此目录下创建的文件的属组还是普通用户所属的组:如:[root@localhost tmp]# ls -ld kk

drwxrxrwx. 2 root root 4096 Aug 16 06:30 kk

[zkc@localhost kk]$ ls -l a

-rw-rw-r--. 1 zkc zkc 0 Aug 16 06:35 a

向目录kk添加g+s权限,添加权限之后,所创建的文件是目录所属的属组[root@localhost tmp]# chmod g+s kk

[root@localhost tmp]# ls -ld kk

drwxr-srwx. 2 root root 4096 Aug 16 06:36 kk

[zkc@localhost kk]$ touch zkc

[zkc@localhost kk]$ ls -l

total 0

-rw-rw-r--. 1 zkc zkc  0 Aug 16 06:35 a

-rw-rw-r--. 1 zkc root 0 Aug 16 06:38 zkc

当其他用户在有SGID权限的目录下创建文件时,文件的属组都为目录所属的组,因此,用户之间可以相互删除对方的文件,这样做是不安全的。所以就出现了第三种特殊权限Sticky。

5.Sticky:

这个特殊权限只对目录有效,对文件无效。对目录的作用有:

1.当用户对此目录有w,x权限时,既具有写入的权限

2.当用户在此目录下创建文件或目录时,仅自己或root才有权限删除此文件

权限设定:

chmod o+t DIR...

chmod o-t DIR...

eg:在一个目录下,此目录对其他用户有w权限。先以不同用户创建文件,查看是否能相互删除文件,然后在设置Sticky权限之后,在此查看能否相互删除文件。

a.在不设定Sticky权限的情况下[root@localhost tmp]# ls -ld test

drwxr-xr-x. 2 root root 4096 Aug 16 06:59 test

[root@localhost tmp]# chmod o+w test

[root@localhost tmp]# ls -ld test

drwxr-xrwx. 2 root root 4096 Aug 16 06:59 test

转到普通用户:[zkc@localhost test]$ touch zkc

[zkc@localhost test]$ ls -l

total 0

-rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc

[kk@localhost test]$ touch kk

[kk@localhost test]$ ls -l

total 0

-rw-rw-r--. 1 kk  kk  0 Aug 16 07:05 kk

-rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc

查看是否能删除对方文件:[zkc@localhost test]$ rm -rf kk

[zkc@localhost test]$ ls

zkc

发现能删除对方文件

b.设定Sticky权限:[root@localhost tmp]# chmod o+t test

[root@localhost tmp]# ls -ld test

drwxr-xrwt. 2 root root 4096 Aug 16 07:06 test

在kk用户下删除zkc用户创建的文件zkc:kk@localhost test]$ rm -rf zkc

rm: cannot remove `zkc': Operation not permitted

[kk@localhost test]$ ls -l

total 0

-rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc

设定Sticky权限之后,虽然目录test的其他(o)权限有w权限,但是不能删除其他用户所创建的文件!

特殊权限的权限位:

SUID :4  SGID:2  Sticky:1

SUID:user,占据属主的执行权限位:

s:属主拥有x权限

S:属主没有x权限

GUID:group,占据属组的执行权限位:

s:属组拥有x权限

S:属组没有x权限

Sticky:other,占据other的执行权限位:

t:other拥有x权限

T:other没有x权限

到此Linux基础中的用户,组,权限和特殊权限基本知识点介绍结束。。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/172219
推荐阅读
相关标签
  

闽ICP备14008679号