linux完全控制权限命令,Linux之权限管理,特殊权限,文件特定属性以及访问控制列表...

权限管理:

TIP 1:

如果要用cp拷贝/etc/fstab文件到 /root/dir目录内,最起码需要文件和目录各有什么权限才能够拷贝过去?

答:cp命令需要有执行权限,fstab文件要有r读的权限,dir目录要有wx读和执行的权限

TIP 2:

如果用户jincheng 对目录 Music 只有 r 权限,那么就只能 ls dir/内的文件名称而已,具体的权限无法使用 ls -l 查看,也无法 cd 进入该目录。

如果该用户对目录 Music 只有 x 权限,即可以 cd 进入该目录,事先知道内部有文件且知道文件名称的情况下,可以 ls -l Music/ct1.conf,查看该文件的权限,若对该ct1.conf有读权限,也可以 cat Music/ct1.conf 文件内容。

如果该用户对目录 Music 只有 w 权限,无法进行任何操作,起码需要加上 x 权限才可以在该文件夹内touch rm cat,如果知道内部文件名称还可 ls -l Filename。

TIP3

chmod -R g+rwX /testdir X 权限位 针对文件夹增加 x 权限,-R递归文件夹内的文件夹增加 x 权限,如果递归文件夹内的文件有 x 权限,则ugo全部加上 x 权限。

TIP4

创建一个用户jincheng,删除其家目录后,如何重新创建其家目录?

首先考虑tom创建用户时会把/etc/skels里的文件放到jincheng家目录内,所以创建文件后要拷贝文件过去,其次jincheng对家目录及内部文件具有完全控制权限,要修改目录和内部文件权限

拷贝/etc/skels里的文件放到jincheng

31428ea9584a4d797098f0ba29dfd0b0.png

更改属主属组

b21d50463444b6d2d42a0f88e5496ba2.png

修改权限

58d4a55d4b0e4e3f213a3478356d536a.png

查看内部文件

3966e1859c268a86e855618076e33670.png

TIP5

现有一项目,有两人参与,分别为jincheng martin,需要在某文件夹进行文件存放,相互之间可以修改,但不可删除。要怎么做?

1,创建devop组

0d48123e2268667b4c6a193750999278.png

2,将两人加入到同一附加组devop中

8a073f05ec88e6dfa6982c7e43dfdb06.png

3,更改programme文件夹属组为devop

a829a4407f9a5e5b215338c776ceb2c6.png

3,创建programme文件夹,并设置3777权限,加入SGID和Sticky位,分别为了在文件夹内创建文件为devop组和禁止用户相互删除对方文件。

0673835de5e386c095fd76ec1869e761.png

d0614dc3102c67051deadd4420ec8019.png

4,测试效果,两个用户分别创建文件,martin进行修改jincheng创建的文件,显示可以写入文本,但删除时提示无权限。

27efa383d70facdbfdb421abddfeef83.png

TIP6

如果这个程序一开始没有x权限,会显示位 S 否则显示为 s

cd48965a799cf5c9e8ea76d62928ba96.png

TIP7

在/data目录下新建一个martin.txt的文件,对其加以chattr +i权限后,即使是root用户对此文件也无法删除,改名和更改。但可以cp该文件,但特定属性不会跟随。

7118d624adf3af5891aca3c02d7762bb.png

TIP8

例如:

/data/下有个文件martin.txt,其他人权限为只读,对jincheng设置acl,让其无法访问和此文件。

00b20fea3a953a323304f0b4e92b9bbd.png

删除用户额外acl

1a3aeb1261c86ae08f1e9604d6313f21.png

/data/下有个文件martin.txt,其他人权限为只读,对devop组设置acl,使其内部的用户martin和jincheng,可以对该文件进行读写操作,下图测试cp命令是,因为/data文件夹无写权限,所以拷贝失败。

d5cf0a8ca8effb9aed4613caef6e0371.png

TIP9

如果jincheng.txt文件设置acl之后,权限后面会多一个+,默认显示的权限为acl权限,而非原始的ugo权限,可设置遮罩mask,统一更改用户对该文件的访问权限,如下列mask,修改后的情况

f866c9ddfd4ff9649775d24b5a9c1ea0.png

846a2ebad89068f0501e1a6d7d6d9893.png

TIP10

如果一个服务需要用到一个文件夹,这个用户对内部所有文件都需要设置权限,可使用acl递归设置权限,方便后续还原原本文件夹权限

d256867111ee4951121461e897122b1c.png

ea34a7779d42ba8e080e17738ef6232b.png

待所有配置完成后,恢复该文件夹原有的权限

43dc6ec21b54989103fcf06cac29a7d9.png

TIP11

备份acl后删除acl,最后还原acl

1b5257ca5659dff16ae6e21c08873d23.png

82421240a0305caa8a7d22717d140080.png

50c93506994ee828524f67c672d05870.png

恢复acl.txt方法有两种,

其一

36d7b2054318befddefe1a8a3695de07.png

其二

af17de7208d064973bc36543387d0cb6.png

文件:

r:可以使用内容查看类的命令来显示其相关内容

w: 可以使用编辑器修改其内容

x:可以将其发起一个进程

目录:

r:可以使用ls命令查看目录内容的文件信息

w:可以创建、删除文件

x:可以使用ls -l命令来查看目录内容的文件信息,并且可以使用cd命令切换此目录为工作目录:

文件的权限主要针对三类对象定义:

owner:属主 u

group:属组 g

other:其他 o

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

r:readable

w:writeable

x:excutable

权限位

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7

例如:

750:rwxr-x---

修改文件权限:chmod

chmod [OPTION]... OCTAL-MODE FILE...

-R:递归修改权限

chmod [OPTION]... MODE[,MODE]... FILE...

MODE:

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

u=

g=

o=

ug=

a= #所有

u=,g=

修改一类用户某位或某些位权限

u+

u-

chmod [OPTION]... --reference=RFILE FILE...

参考RFILE文件的权限,将FILE的修改为同RFILE

例如:

chgrp sales testfile

chown root:admins testfile

chmod u+wx,g-r,o=rx file

chmod -R g+rwX /testdir

chmod 600 file

chown mage testfile

修改文件的属主和属组:仅root可用

修改文件的属主:chown

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

用法:

OWNER

OWNER:GROUP

:GROUP

注意:命令中的冒号可用.替换

-R:递归

chown [OPTION]... --reference=RFILE FILE...

修改文件的属组:chgrp

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

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

FILE: 666-umask

注意:如果某类的用户的权限减得的结果中存在x权限,则将其权限+1

DIR:777-umask

umask:查看

umask #:设定

例如:

umask 002

umask u=rw,g=r,o=

仅对当前用户的当前shell进程有效,若想一直生效,可修改全局设置: /etc/bashrc 用户设置:~/.bashrc

umask –S 模式方式显示

umask –p 输出可被调用

特殊权限:SUID,SGID,Stikcy

1.权限

r,w,x

user group other

2.安全上下文

前提:进程有属主和属组,文件有属主和属组

1.任何一个可执行文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限

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

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

4.进程的发起者,同文件的属主,则应用文件属主权限

5.进程的发起者,属于文件的属组,则应用文件属组权限

6.进程的发起者,属于其他用户,则应用文件其他权限

3.SUID

1.任何一个可执行文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限

2.启动为进程之后,其进程的属主仍为原程序文件的属主

权限设定:

chmod u+s FILE...

chmod u-s FILE...

4.SGID

默认情况下,用户创建文件时,其属组为此用户所属的基本组

一旦某目录被设定了SGID,则对此目录具有写权限的用户在此目录中创建的文件所属的组为此目录的属组

权限设定:

chmod g+s DIR...

chmod g-s DIR...

5.Sticky

对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件

权限设定:

chmod o+t DIR...

chmod o-t DIR...

SUID SGID STICKY

chmod 1777 /tmp/kk.txt

几个权限位映射:

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

s:属主拥有x权限

S:属主没有x权限

SGID:group占据属主的执行权限位

s:group拥有x权限

S:group没有x权限

sticky:other占据属主的执行权限位

t:other拥有x权限

T:other没有x权限

设定文件特定属性

chattr +i 不能删除,改名,更改

chattr +a 只能追加内容

lsattr 显示特定属性

访问控制列表

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

ACL生效顺序:所有者,自定义用户,自定义组,其他人

为多用户或者组的文件和目录赋予访问权限rwx

mount -o acl /directory

getfacl file |directory

setfacl -m u:wang:rwx file|directory

setfacl -Rm g:sales:rwX directory 递归对目录设置acl权限

setfacl -Rb directory 对目录内递归删除设置的acl权限

setfacl -M file.acl file|directory 根据file.acl内设置的权限对file或directory设置权限

setfacl -m g:salesgroup:rw file| directory 此选项为给salesgroup组设置权限,使属于这个组的用户对file或directory具有rw权限

setfacl -m d:u:wang:rx directory 此选项为对目录设置acl ,其下创建的目录对wang用户继承acl权限

setfacl -x u:wang file |directory :此选项不能完全删除文件acl权限,完全清楚所有acl,使用-b选项

setfacl -X file.acl directory

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限

getfacl 可看到特殊权限:flags

通过ACL赋予目录默认x权限,目录内文件也不会继承x权限

base ACL 不能删除

setfacl -k dir 删除默认ACL权限

setfacl –b file1清除所有ACL权限

getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2

mask只影响除所有者和other的之外的人和组的最大权限

Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

用户或组的设置必须存在于mask权限设定范围内才会生效 setfacl -m mask::rx file

--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以

示例:

setfacl --set u::rw,u:wang:rw,g::r,o::- file1

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

getfacl -R /tmp/dir1 > acl.txt

setfacl -R -b /tmp/dir1

setfacl -R --set-file=acl.txt /tmp/dir1

setfacl --restore acl.txt

getfacl -R /tmp/dir1

练习

1,在/testdir/dir里创建的新文件自动属于devop组,组apps的成员如:jinchengt能对这些新文件有读写权限,组dbs的成员如:martin只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹

2,备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值