Linux 权限管理

一、简述

权限主要用于约束用户能对系统所做的操作。因为系统中不可能只有存在一个 root 用户,一定会存在多个用户,所以我们要用权限来约束用户。在 Linux 系统中针对文件定义了三种身份,分别是属主(owner)属组(group)其他用户(others)。每一种身份又对应着三种劝权限,可读(readable)可写(writable)可执行(executable)

二、权限字段说明

~]# touch file.txt
~]# ll file.txt 
-rw-r--r-- 1 root root 0 Jan 24 10:25 file.txt

rw-:代表属主的权限,root 代表属主

r--:代表属组的权限,第二个 root 代表的是属组

r--:其他用户权限,不是属主也不在属组中的其他用户

root:属主,文件或目录的所属用户

root:属组,文件或目录的所属用户组

通过以上内容可看到,-rw-r--r-- 权限字段共十个字符,第一个字符在 文件属性 中有说到代表的是文件类型,其他的九个字符代表的就是三种身份的权限,前三个代表的是属主的权限,中间三个代表的是属组的权限,最后三个代表的是其他用户的权限。

三、权限代表方式

权限可以分为两种方式来表示,第一种,ugo(user group other);第二种,number

字母 含义 对应数字 对文件的影响 对目录的影响
r(read) 读取权限 4 具有读取文件内容的权限 具有浏览目录及子目录的权限
w(write) 写入权限 2 具有新增、修改文件内容的权限 具有增加和删除目录内文件的权限
x(execute) 执行权限 1 具有执行文件的权限 具有访问目录的内容权限(取决于文件的权限)
-(没有权限) 没有权限 0 没有权限 没有权限

例:

ugo:
#给所有用户添加读写执行权限
~]# chmod a=rwx file.txt 
~]# ll file.txt 
-rwxrwxrwx 1 root root 0 Jan 24 10:25 file.txt

#取消所有用户的所有权限
~]# chmod a=-rwx file.txt 
~]# ll file.txt 
---------- 1 root root 0 Jan 24 10:25 file.txt

#给属主读写执行权限,给属组读写权限,给其他用户只读权限
~]# chmod u=rwx,g=rw-,o=r-- file.txt 
~]# ll file.txt 
-rwxrw-r-- 1 root root 0 Jan 24 10:25 file.txt

#给属组读写执行权限,其他用户读写权限
~]# chmod g=rwx,o=rw- file.txt 
~]# ll file.txt 
-rwxrwxrw- 1 root root 0 Jan 24 10:25 file.txt

number:
#给所有用户添加读写执行权限
~]# chmod 777 file.txt 
~]# ll file.txt 
-rwxrwxrwx 1 root root 0 Jan 24 10:25 file.txt

#取消所有用户的所有权限
~]# chmod 000 file.txt 
~]# ll file.txt 
---------- 1 root root 0 Jan 24 10:25 file.txt

#给属主读写执行权限,给属组读写权限,给其他用户只读权限
~]# chmod 764 file.txt 
~]# ll file.txt 
-rwxrw-r-- 1 root root 0 Jan 24 10:25 file.txt

#给属组读写执行权限,其他用户读写权限
~]# chmod 776 file.txt
~]# ll file.txt 
-rwxrwxrw- 1 root root 0 Jan 24 10:25 file.txt

四、常用权限

文件默认权限:644

目录默认权限:755

密码文件默认权限:600

日志文件默认权限:600

可执行文件默认权限:755

软链接文件默认权限:777

针对文件的权限:

rw: 能看文件,能编辑文件,不能执行,不能删除,不能移动,不能复制。
rx: 能看文件,不能编辑文件,能执行,不能删除,不能移动,不能复制。
rwx:能看文件,不能编辑文件,能执行,不能删除,不能移动,不能复制。

针对目录的权限:

rx: 能进入目录,能查看目录下的文件,至于操作文件需要看文件本身的权限。
rwx:如果赋予了w权限,那么该目录下的文件可以复制/删除/移动/修改。

五、属主和属组的变更(chown)

#语法
##同时修改属主和属组
chown [要修改的属主].[要修改的属组] [文件或目录]
或
chown [要修改的属主]:[要修改的属组] [文件或目录]

##仅修改属主
chown [要修改的属主] [文件或目录]

##仅修改属组
chown .[要修改的属组] [文件或目录]

#参数说明
-R    修改目录以及目录下的所有文件属主和属组

六、切换用户和提权

su & su -(切换用户)

su 命令是用切换用户使用的,普通用户于普通用户之间的用户是需要输入密码的,root 用户切换普通用户无需输入密码。susu - 的区别就在于加载的环境变量不一样。

使用方法:

~]# su - [用户]

sudo(提权)

当普通用户需要执行一些管理员操作的时候就需要用到 sudo 。

1.快速提权

直接将普通用户切换至wheel组中 (wheel组是默认拥有sudo权限的)

~]# usermod test -g wheel
~]# id test
uid=2002(test) gid=10(wheel) groups=10(wheel)

2.手动提权

可使用 visudo 命令或者 vim /etd/sudoersvisudo有语法检测功能,输入错误无法保存退出)

#用户提权方式
root    ALL=(ALL)       ALL
    root:   用户
    ALL:    主机名
    (ALL):  角色名
    ALL:    所有权限

#用户组提权方式
%wheel  ALL=(ALL)       ALL
    %:     组
    wheel: 组名
    ALL:    主机名
    (ALL):  角色名
    ALL:    所有权限

七、特殊权限

1.suid(set uid)

当命令设定了 suid 特殊权限的话,无论是谁运行这个命令都会被暂时的定义为属主在运行这个命令。

例:

#语法:
~]# chmod u+s /usr/bin/cat    #加特殊权限
~]# chmod u-s /usr/bin/cat    #取消特殊权限
~]# chmod 4755 /usr/bin/cat   #数字代表方式(4000)

#查看 file.txt 文件的权限及属主、属组
~]# ll /tmp/file.txt 
-rw-r----- 1 root root 4 Jan 24 15:37 /tmp/file.txt

#创建一个 test 用户
~]# useradd test

#测试 test 用户是否可以查看 file.txt 文件
~]# su - test
~]$ cat /tmp/file.txt 
cat: /tmp/file.txt: Permission denied(报错没有权限无法查看文件内容)

#为 cat 添加 suid 权限
~]# chmod u+s /usr/bin/cat
~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 Nov 17  2020 /usr/bin/cat

#再次测试
~]# su - test
~]$ cat /tmp/file.txt 
123(本次测试没有可以查看文件内容)

#取消权限
~]# chmod u-s /usr/bin/cat

2.sgid

sgid 通常是对目录操作的,将目录设置为 sgid 后,往后目录下创建的文件都与该目录属组保持一致。

例:

#语法:
~]# chmod g+s test     #加特殊权限
~]# chmod g-s test     #取消特殊权限
~]# chmod 2755 test    #数字代表方式(2000)

#创建一个 test 目录
~]# mkdir test

#给 test 目录添加 sgid 权限
~]# chmod g+s test
~]# ll -d test
drwxr-sr-x 2 root root 6 Jan 24 16:17 test

#修改 test 的属组
~]# chown root:test test/

#创建在 test 目录下创建一个 1.txt 文件
~]# echo 123 > test/1.txt
~]# ll -d test/1.txt 
-rw-r--r-- 1 root test 4 Jan 24 16:18 test/1.txt

#取消权限
~]# chmod g-s test
~]# echo 123 > test/2.txt
~]# ll -d test/2.txt 
-rw-r--r-- 1 root root 4 Jan 24 16:24 test/2.txt

3.sbit

如果一个目录设定了 sbit (粘滞位)那么谁都可以在这个目录下创建文件,但是删除文件只能是谁创建的文件谁删除文件。除此之外 root 和该目录的属组也可以删除该目录下的文件。

#语法:
~]# chmod o+t  test    #加特殊权限
~]# chmod o-t  test    #取消特殊权限
~]# chmod 1755 test    #数字代表方式(1000)

八、特殊属性

lsattr:查看文件的特殊属性    
chattr:修改文件的特殊属性

#用法
chattr +[参数] [文件名称]  添加特殊属性
chattr -[参数] [文件名称]  取下特殊属性

#参数
+a      只能往文件中追加内容,不能做任何操作
+i      锁定文件,不能删除,不能追加,不能移动

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