0


Linux用户与权限管理命令

一、Linux用户介绍

Linux用户类型分为三类:超级管理员用户、系统用户和普通用户

超级管理员用户(root用户):UID为 0,具有一切权限,可以操作系统中的所有资源。Root用户可 以进行基础的文件操作及特殊的系统管理,可以修改系统中的任何文件。

系统用户:Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务 器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏围。

普通用户:UID 从 1000 开始:是由管理员创建的用于日常工作的用户,能够使用Linux的大部分资 源,一些特定的权限受到控制。用户只对自己的目录有写权限,读写权限受一定的限制,有效保证了系 统安全性。

二、用户和组相关文件

/etc/passwd 文件 :是用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以读取此文件内容。文件内数据格式如下

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

密码字段的"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中

/etc/shadow 文件 :用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。由于/etc/passwd 文 件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权 限,这样就保证了用户密码的安全性。文件内数据格式如下

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数: 密码过期后的宽限时间:账号失效时间:保留字段

/etc/group 文件 :存放用户组的信息,此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字 段,这些字段有:

组名:口令:组标识号:组内用户列表

三、用户和组管理命令

whoami 查看当前登录用户名

who 查看登录的用户

id 用户名 显示用户的ID,以及所属群组的ID

sudo 以管理员身份执行命令,普通用户默认无法使用sudo命令,需要将用户添加到wheel组当中

su - 用户名 改变当前用户,比如用了su - root之后,下面所有的命令就可以不用打sudo了,因为当

前用户已经是管理员root了。注意:从 root用户切换到普通用户时不需要输入密码,而从普通用户切换成root用户需要进行验证

useradd:创建新的用户

格式:useradd [选项] 用户名

• -u 指定该用户的默认 UID*Linux***权限管理 **

在Linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。

• -g 指定一个初始的用户基本组

passwd:修改用户密码、过期时间、认证信息等

格式:passwd [选项] [用户名]

• -l 锁定用户,禁止其登录

• -u 解除锁定,允许用户登录

• -e 强制用户在下次登录时修改密码

userdel:删除用户

userdel [选项] 用户名

• -r 同时删除用户及用户家目录

usermod:修改用户的属性

格式:usermod [选项] 用户名

• -g 修改用户的基本组

• -G 修改用户的附加组

• -u 修改用户的 UID

chage:修改帐号和密码的有效期限

格式:chage [选项] 用户名

• -M:密码保持有效的最大天数

• -W:用户密码到期前多少天开始提醒

groupadd:创建一个组

格式:groupadd [选项] 组名

• -g 指定该组的默认 GID

例如:创建组ID为1111的用户组test,可以执行:groupadd –g 1111 test

groupmod:修改用户组的属性

格式:groupmod [选项] 组名

• -g 为用户组指定新的GID

• -n 为用户组改名

例如:要将系统中已经存在的组test组名修改为test1、组ID为1112,可执行命令:groupmod –g 1112

–n test1 test

gpasswd:将用户加入到某个组或从某个组移除

格式:gpasswd [选项] 用户名 组名

• -a:将用户加入到组中

• -d:将用户从组中移除

groupdel:删除用户组

格式:groupdel 用户组

例如要将系统中已经存在的组test1删除,可执行命令:groupdel test1

groups:查看某个用户属于哪些组

格式:groups 用户名

四、Linux权限管理命令

每个文件的权限针对三类对象进行定义:

它的所有者(由u表示)

它的所有组(由g代表),代表该组的所有成员

其他(由o表示,除所有者和所有组的用户)

所有用户(用a表示)

每个文件针对每类访问者定义了三种主要权限:

读(由r表示)

写(或修改,用w表示)

执行(由x表示)

rwx r-- r--

421 400 400

7 4 4

以下三个命令控制与文件关联的权限:

chmod 更改文件的权限

格式:chmod [选项] 要分配的权限 文件或目录名

-R:改变目录及目录下的文件和目录的访问权限

chown 更改文件和目录的所有者

格式:chown 选项 用户名 文件或目录名

-R:改变目录及目录下的文件和目录的所有者

chgrp 更改文件和目录的所属组

格式:chgrp 选项 组名 文件或目录名

-R:改变目录及目录下的文件和目录的所属组

*特殊权限(粘滞位(SBIT)、sgidsuid*) **

粘滞位针对目录赋权,为目录添加粘滞位后该目录中创建的文件和目录只有创建者和超级管理员可以删 除 (数字权限1)

SUID针对可执行文件赋权, 如作用在普通文件中没有任何意义 。在默认情况下,用户发起一个进程, 该进程的属主是发起者,而并非是文件的属主,但是如果给二进制程序文件添加了SUID权限后,用户发起一个进程,该进程的属主为程序文件所属的属主,而并非是发起者。 (数字权限4)

suid赋予方法:chmod u+s 可执行文件名称

粘滞位赋予方法:chmod o+t 目录名称

sgid针对目录赋权,为目录添加sgid后在该目录中建立的文件属组继承父目录的属组 (数字权限2)

sgid赋予方法:chmod g+s 目录名称

sgid针对可执行文件赋权,用户发起一个进程,该进程的属主为程序文件所属的属组,而并非是发起者。(数字权限2)

特殊属性

chattr: 改变属性

格式:chattr 选项 文件或目录

• i:不能更改

• a:不能删除和修改,只能追加

lsattr:查看属性

格式:lsattr 文件或目录

umask

umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所 具有的默认权限就是由umask值决定的。

对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行

umask命令可以查看当前用户的umask值。

默认情况下,对于目录,用户所能拥有的最大权限是777;对于文件,用户所能拥有的最大权限是目录的最大权限去掉执行权限,即666。因为x执行权限对于目录是必须的,没有执行权限就无法进入目录,而对于文件则不必默认赋予x执行权限。

计算方式

对于目录:777 - umask = 创建的目录的默认权限

对于文件:666 - umask = 创建的文件的默认权限

修改umask方法

编辑/etc/profile和/etc/bashrc的内容,然后执行 source /etc/profile /etc/bashrc 重新读

取bash配置

*权限细化(ACL*) **

ACL主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限划

分。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的设定非 常有帮助。

ACL 主要可以针对下列几个方面来控制权限:

使用者 (user):可以针对使用者来设定权限;

群组 (group):针对群组为对象来设定其权限;

默认属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;

ACL的设定方法

• setfacl:设定某个目录/文件的 ACL

格式:setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名

选项与参数:

-m :设定后续的 acl 参数给文件使用,不可与 -x 合用;

-x :删除后续的 acl 参数,不可与 -m 合用;

-b :移除『所有的』 ACL 设定参数;

-k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;

-R :递归设定 acl ,即包括子目录都会被设定;

-d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

例如:针对test用户设置 ACL 权限 [u:账号:权限]如果是组的话格式为[g:组名:权限]

[root@localhost var]# touch acl_test

[root@localhost var]# ll acl_test

-rw-r--r--. 1 root root 0 8月 15 23:02 acl_test

[root@localhost var]# setfacl -m u:test:rx acl_test

[root@localhost var]# ll acl_test

-rw-r-xr--+ 1 root root 0 8月 15 23:02 acl_test

权限部分多了个 +

[root@localhost var]# setfacl -m u::rwx acl_test

[root@localhost var]# ll acl_test

-rwxr-xr--+ 1 root root 0 8月 15 23:02 acl_test

设定值中的 u 后面未指定用户,代表设定该文件拥有者,所以上面显示 root 的权限成为 rwx

了!

注:如果一个文件设定了 ACL 参数后,他的权限部分就会多出一个 + 号,但是此时你看到的权限与实际权 限可能就会有点误差,可以通过 getfacl 来查看。

• getfacl:查看某个目录/文件的 ACL

格式:getfacl filename

[root@localhost var]# getfacl acl_test

file: acl_test <==文件名

owner: root <==文件所有者

group: root <==文件所属组

user::rwx <==文件所有者的权限

user:test:r-x <==test用户的权限

group::r-- <==文件所属组的权限

mask::r-x <==文件预设的有效权限

other::r-- <==其他用户的权限

• 有效权限的设定,用户或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效,此即有效

权限 [m:权限]

例如:test用户的权限与 mask 的集合仅有 r 的存在,所以 test 用户仅具有 r 的权

限,并不存在 w 权限,这就是 mask 的功能。我们可以通过 mask 来规定允许的最大权限,这样就可以避

免不小心开放某些权限给其他用户或组了。

[root@localhost var]# touch acl.txt

[root@localhost var]# setfacl -m u:test:rw acl.txt

[root@localhost var]# setfacl -m m:r acl.txt

[root@localhost var]# getfacl acl.txt

file: acl.txt# owner: root

group: root

user::rw-

user:test:rw- #effective:r--

group::r--

mask::r--

other::r--

• 使用默认权限设定目录中新建文件的 ACL 权限继承 [d:[u|g]:[user|group]:权限]

例如:创建 test 目录,为该目录设置默认 ACL 后在该目录下新建的目录与文件均会继承该目录的ACL

[root@localhost var]# mkdir test

[root@localhost var]# setfacl -m d:u:test:rx test

[root@localhost var]# getfacl test

file: test

owner: root

group: root

user::rwx

group::r-x

other::r-x

default:user::rwx

default:user:test:r-x

default:group::r-x

default:mask::r-x

default:other::r-x

[root@localhost var]# cd test

[root@localhost test]# touch 111

[root@localhost test]# mkdir 222

[root@localhost test]# ll

总用量 0

-rw-r--r--+ 1 root root 0 8月 16 00:16 111

drwxr-xr-x+ 2 root root 6 8月 16 00:16 222

• 取消 ACL

setfacl -b filename #取消所有的ACL

setfacl -x u:test test #取消test目录的test用户的

setfacl -k test #取消默认ACL

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/Stupid__Angel/article/details/126377554
版权归原作者 victor_王泽华 所有, 如有侵权,请联系我们删除。

“Linux用户与权限管理命令”的评论:

还没有评论