在Linux中,一切皆为文件(目录也是文件),每个文件对用户具有可读(read)、可写(write)、可执行(execute)权限。目录的执行操作表示是否有权限进入该目录,文件的可执行表示是否可以运行该文件。文件都会从属于一个用户和一个用户组,每个文件针对文件的拥有者、所属组以及其他用户组具有特定的权限。
[root@ZSSM01 zhsm]# ls -la
total 16356
drwxr-xr-x 2 root root 4096 Nov 18 15:44 .
drwxrwxr-x 6 zsitd zsitd 55 Nov 6 14:39 ..
-rw-r--r-- 1 root root 168 Jul 27 10:02 appsettings.Development.json
-rw-r--r-- 1 root root 629 Nov 3 13:52 appsettings.json
-rw-r--r-- 1 root root 52616 May 12 2020 dotnet-aspnet-codegenerator-design.dll
-rw-r--r-- 1 root root 31 Nov 6 14:27 host.json
-rw-r--r-- 1 root root 37256 Jun 17 22:02 Microsoft.AspNetCore.Authentication.JwtBearer.dll
文件的权限,-rw-rw-r-- ,一共有10位数。
其中:
- 最前面那个 - 代表的是类型(-代表文件,d代表目录,l代表连接)
- 中间那三个 rw- 代表的是所有者(user)
- 然后那三个 rw- 代表的是组群(group)
- 最后那三个 r-- 代表的是其他人(other)
权限部分:
- r 表示文件可以被读(read) ,用数字表示为:4
- w 表示文件可以被写(write) ,用数字表示为:2
- x 表示文件可以被执行(如果它是程序的话) ,用数字表示为:1
- -表示相应的权限还没有被授予,用数字表示为0,
权限的不同组合,如rwx用数字表示则为7,r-x用数字表示则为5,以此类推。那么一个文件的权限(所有者、所属组及其他)就可能是如下的情况:- -rw------- (600) 只有所有者才有读和写的权限
- -rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
- -rwx------ (700) 只有所有者才有读,写,执行的权限
- -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
- -rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
- -rw-rw-rw- (666) 每个人都有读写的权限
- -rwxrwxrwx (777) 每个人都有读写和执行的权限
在 linux 系统中还有三种与用户身份无关的三个文件权限属性。即SUID、SGID和Sticky。
运行在centos下在的.net core webapi站点需要在运行目录下创建和修改文件,因此运行该程序的用户需要对文件夹具有写入权限,而该文件夹是root用户创建。
[program:Sms]
command=dotnet Sudo.Sms.WebApi.dll ; 运行程序的命令
directory=/data/www/sms ; 命令执行的目录
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量user=zsitd ; 进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true ;程序意外退出是否自动重启
startsecs=3 ;/自动重启间隔
stderr_logfile=/var/log/supervisor/Sudo.Sms.WebApi.err.log ; 错误日志文件
stdout_logfile=/var/log/supervisor/Sudo.Sms.WebApi.out.log ; 输出日志文件
[root@ZSSM01 ~]# cd /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root root 4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd 55 Nov 6 14:39 ..
-rw-r--r-- 1 root root 211 Sep 8 14:04 appsettings.Development.json
-rw-r--r-- 1 root root 575 Sep 14 13:18 appsettings.json
-rw-r--r-- 1 root root 31 Sep 4 12:07 host.json
-rw-r--r-- 1 root root 37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll
将文件夹/data/www/sms所属用户组修改为zsitd。
[root@ZSSM01 sms]# chgrp -R zsitd /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root zsitd 4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd 55 Nov 6 14:39 ..
-rw-r--r-- 1 root zsitd 211 Sep 8 14:04 appsettings.Development.json
-rw-r--r-- 1 root zsitd 575 Sep 14 13:18 appsettings.json
-rw-r--r-- 1 root zsitd 31 Sep 4 12:07 host.json
-rw-r--r-- 1 root zsitd 37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll
[root@ZSSM01 sms]# chmod -R 775 /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root zsitd 4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd 55 Nov 6 14:39 ..
-rwxrwxr-x 1 root zsitd 211 Sep 8 14:04 appsettings.Development.json
-rwxrwxr-x 1 root zsitd 575 Sep 14 13:18 appsettings.json
-rwxrwxr-x 1 root zsitd 31 Sep 4 12:07 host.json
-rwxrwxr-x 1 root zsitd 37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll
此外,授权文件权限,还可以通过ACL来授权。
[root@ZSSM01 sms]# setfacl -Rm user:zsitd:rw /data/www/sms
[root@ZSSM01 sms]# getfacl /data/www/sms
getfacl: Removing leading '/' from absolute path names
# file: data/www/sms
# owner: root
# group: root
user::rwx
user:zsitd:rw-
group::r-x
mask::rwx
other::r-x
此时,我们发现,在原有的“-rw-rw-r–”后增加了一个“+”,这表示启用了ACL权限。
[root@ZSSM01 sms]# ls -la
total 160
drwxrwxr-x+ 2 root root 154 Nov 22 16:16 .
drwxrwxr-x 7 zsitd zsitd 67 Nov 22 16:16 ..
-rw-rw-r--+ 1 root root 131708 Sep 14 13:21 Sudo.Sms.WebApi.deps.json
-rw-rw-r--+ 1 root root 19456 Sep 14 13:21 Sudo.Sms.WebApi.dll
-rw-rw-r--+ 1 root root 236 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.dev.json
-rw-rw-r--+ 1 root root 224 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.json
[root@ZSSM01 sms]# setfacl -Rb /data/www/sms
[root@ZSSM01 sms]# ls -la
total 160
drwxr-xr-x 2 root root 154 Nov 22 16:16 .
drwxrwxr-x 7 zsitd zsitd 67 Nov 22 16:16 ..
-rw-r--r-- 1 root root 131708 Sep 14 13:21 Sudo.Sms.WebApi.deps.json
-rw-r--r-- 1 root root 19456 Sep 14 13:21 Sudo.Sms.WebApi.dll
-rw-r--r-- 1 root root 236 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.dev.json
-rw-r--r-- 1 root root 224 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.json
本文为ldy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:CentOS/Linux上授予用户文件夹写入权限_dotnba的博客-CSDN博客