Linux内文件的权限问题

1 多个账号的实际意义

linux作为程序生产系统的部署环境,最常见的是通过命令行远程连接访问,进行运维操作.

作为一个操作系统,linux中存放了重要的系统文件和软件以及配置文件以及生产系统的代码包.

项目上线之后,会有多个人需要访问linux做运维,但每个人都使用root账号是不现实的,如果一个人不小心删除了数据库文件,那就是生产的事故.

不同需求的人用不同权限的账号来访问,对生产环境的安全是非常重要的.举例来说,出现生产问题,开发人员需要拿日志文件进行问题定位,他的账号仅仅对日志的目录有可写权限就足够.又比如,有些需要临时解决的生产问题,需要替换代码(如替换class文件或者js文件)来暂时解决生产问题,此时登录的账号就需要对部署的目录有读和写和执行(重启项目)的权限.但上面两种情况都不需要对其他目录如数据库安装目录有操作权限.

在我看来,同一台linux的不同账号,他们的区别就是对于一个文件来说,这些账号对这个文件的操作权限是否有区别.

2 拥有者|群组|其他人

当进入linux上的一个文件夹时,任何一个文件都有如下信息

[YAOYE@yaoyeLinux mypragram]$ ll
-rwxrw-r--. 1 YAOYE YAOYE 572 2月   3 08:49 TestJVM.class

如上面命令行结果所示进行分析,最左侧的一串字符"-rwxrw-r–"将其划分为如下部分

[-][rwx][rw-][r–]

[-] 表示该文件是文件,该文件如果是个目录则是d
[rwx]表示文件的拥有者对应的账号对这个文件可读可写可执行
[rw-]表示文件的群组内所有账号对这个文件可读可写不可执行
[r–]表示其他人账号只能读,不能写,不能执行

中间的 “YAOYE YAOYE”

第一个YAOYE表示文件的拥有者账户是YAOYE
第二个YAOYE表示文件的群组名叫做YAOYE,YAOYE这个群组内可以添加多个其他账号,这些账号对此文件的权限都是[rw-]

572 2月 3 08:49 TestJVM.class

572 代表文件大小572个字节
2月 3 08:49 表示文件在今年的2月3日 08:49创建或者修改,如果是很久之前的文件则会列出年份.
TestJVM.class 就是文件名

对于文件夹
drwxrwxr--. 2 YAOYE YAOYE 4096 4月  10 16:52 testdir

由于拥有者和群组以外其他账号的权限是[r–],因此除了拥有者和群组内的账号,其他账号是无法进入文件夹的

drwxrwxr-x. 2 YAOYE YAOYE 4096 4月  10 16:52 testdir

由于拥有者和群组以外其他账号的权限是[r-x],因此其他人的账号可以进入文件夹

总结

拥有者是一个账号
群组包含多个账号
其他人是除了拥有者和群组内账号的其他账号
root账号不受约束,权限最大

3 修改文件的权限

使用场景一般是对文件或者文件夹进行拷贝后,对副本的权限进行重新设置.

修改文件群组 chgrp

例如我现在所在目录信息如下,拥有者YAOYE,群组名YAOYE,现在要对下面文件和文件夹变更群组

[YAOYE@yaoyeLinux testAuth]$ ll
总用量 4
-rw-rw-r--. 1 YAOYE YAOYE    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE YAOYE 4096 4月  10 17:15 testdir

变更后的群组名必须在/etc/group文件中存在,我们观察这个文件,只有root账号有权限修改

-rw-r--r--.  1 root root    683 7月  24 2019 group

查看这个文件

[YAOYE@yaoyeLinux etc]$ tail group
cgred:x:499:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
sshd:x:74:
tcpdump:x:72:
oprofile:x:16:
slocate:x:21:
mysql:x:498:
YAOYE:x:500:
[YAOYE@yaoyeLinux etc]$ 

需要使用root账号去变更文件群组,将main.c群组改为mysql

[root@yaoyeLinux testAuth]# ll
总用量 4
-rw-rw-r--. 1 YAOYE YAOYE    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE YAOYE 4096 4月  10 17:15 testdir
[root@yaoyeLinux testAuth]# chgrp mysql  main.c 
[root@yaoyeLinux testAuth]# ll
总用量 4
-rw-rw-r--. 1 YAOYE mysql    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE YAOYE 4096 4月  10 17:15 testdir
[root@yaoyeLinux testAuth]# 

注意:修改文件夹群组如果希望文件夹内文件群组全部修改,则需要在文件夹前面添加-R

[root@yaoyeLinux testAuth]# ll
总用量 4
-rw-rw-r--. 1 YAOYE mysql    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE YAOYE 4096 4月  10 17:34 testdir
[root@yaoyeLinux testAuth]# 
[root@yaoyeLinux testAuth]# 
[root@yaoyeLinux testAuth]# chgrp -R mysql testdir/
[root@yaoyeLinux testAuth]# cd testdir/
[root@yaoyeLinux testdir]# ll
总用量 0
-rw-rw-r--. 1 YAOYE mysql 0 4月  10 17:34 son.c
[root@yaoyeLinux testdir]# 
修改文件拥有者 chown

修改后的文件拥有者账号必须已经存在.

linux内所有账号是存在/etc/passwd文件中的.

修改的指令是chown [-R] 新拥有者 文件名|文件夹名

修改文件当前的拥有者和群组以及其他人的权限 chmod
[root@yaoyeLinux testAuth]# ll
总用量 4
-rw-rw-r--. 1 YAOYE mysql    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE mysql 4096 4月  10 17:34 testdir
[root@yaoyeLinux testAuth]# 
[root@yaoyeLinux testAuth]# 

例如现在main.c文件的权限是[rw-][rw-][r–]
我希望将其权限修改成[rwx][r-x][r–]
注意:
字母r代表4
字母w代表2
字母x代表1
符号-代表0
要修改成的拥有者权限rwx就是4+2+1=7
要修改成的群组权限r-x就是4+0+1=5
要修改成的其他人权限r–就是4+0+0=4

所以指令如下 chmod [-R] 拥有者权限数字表示&群组权限数字表示$其他人权限数字表示 文件|文件夹

[root@yaoyeLinux testAuth]# chmod 754 main.c  
[root@yaoyeLinux testAuth]# ll
总用量 4
-rwxr-xr--. 1 YAOYE mysql    0 4月  10 17:15 main.c
drwxrwxr-x. 2 YAOYE mysql 4096 4月  10 17:34 testdir
[root@yaoyeLinux testAuth]# 

4 文件夹权限的特殊性

文件夹的权限有特殊的地方

r:

可以看见文件夹,在能进入文件夹的情况下(r–是无法进入文件夹的),可以查看到文件夹内的文件列表

w:

文件夹下新建文件或者文件夹
删除文件夹内任何的文件或者文件夹,不论这些文件是不是可写的
修改文件夹内文件夹名称或者文件内容或者文件名
移动文件夹内任何文件或者文件夹的位置

x:

进入当前文件夹

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值