Linux权限配置及ACL权限
一、linux用户权限设置有哪些
1.用户
linux中默认有两类用户:超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做受限制,adduser创建的用户
用户切换:
普通→超级用户: su -
(需要输入密码)
root→普通用户: su - 用户名
(无需输入密码)
改密码:
在当前用户下修改
passwd
如果是root 后面跟用户名
passwd username
exit or CTRL + D
可以退出普通用户身份到root- 每次使用su都会创建一个进程,尽量减少使用su跳转到root
2、linux中角色类别
- 拥有者 owner u
- 所属组 group g
- 其他 other o
- 全部 a
3、权限
- 第1列一共十个字符
d: 文件夹;目录,字母”d”,是dirtectory(目录)的缩写
-:普通文件(文本,动静态库,可执行程序,源程序)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件 (通信)
c:字符设备文件(例如屏幕等串口设备、鼠标键盘)
s:套接口文件(软链接)
剩下9个字符
3+3+3为一组,拥有者 所属组 其他人 所具有的文件权限属性
rwx必须按顺序,可读 可写 可执行 -为否
- 第2列,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录 的话,那它的数目就是该目录中的文件个数了。
- 第3列,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一 栏大概都是它的账号名称。
- 第4列,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过 大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时, 才可能会给他另一个组。
- 第5列,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte, 当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大 小单位,不过一般我们还是以byte为主。
- 第6列,表示最后一次修改时间。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
- 第7列,表示文件名。我们可以用ls –a显示隐藏的文件名。
若权限为6(4+2)则代表可读、可写。
权限为5代表可读(4)和可执行(1).
权限为3代表可写(2)和可执行(1)。
普通文件即实际保存数据的地方,其并不具备删除自身的权限:
r:可读取文件的实际内容
w:可编辑、新增、修改该文件的实际内容
x:可被执行
目录文件即保存有目录结构和文件权限:
r:可读取目录结构和权限
w:可更改目录结构列表、新建、删除、重命名、转移子文件、目录
x:表示用户可进入到该目录中
4、修改权限chmod
chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 ①文字设定法 语法:chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:
chmod g+r,o+r public
使同组和其他用户对文件public有读权限。
②数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读
权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
语法:chmod [mode] 文件名
指令实例:
chmod a+x file.txt
即设定文件file.txt的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
chmod ug+w,o-x file.txt
即设定文件file.txt的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
chmod u+s install.run
假设执行chmod后install.run的权限为(可以用ls –l install.run命令来看):
–rws–x–x 1 sunfeng users 3689 Nov 5 17:22 install.run
并且这个执行文件要用到一个文本文件ceshi.c,其文件存取权限为“–rw——-”,
即该文件只有其属主具有读写权限。
当其他用户执行install.run这个程序时,他的身份因这个程序暂时变成sunfeng(由于chmod
命令中使用了s选项),所以他就能够读取ceshi.c这个文件(虽然这个文件被设定为
其他人不具备任何权限),这就是s的功能。
因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非
必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到***。
chmod a–x hkc.txt
chmod –x hkc.txt
chmod ugo–x hkc.txt
以上这三个命令都是将文件hkc.txt的执行权限删除,它设定的对象为所有使用者。
chmod 644 hkc.txt
即设定文件hkc.txt的属性为:-rw-r–r–
文件属主(u)sunfeng 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
chmod 750 Ai.txt
即设定Ai.txt这个文件的属性为:-rwxr-x—
文件主本人(u)sunfeng 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限
修改文件所属组:chgrp
chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
#chgrp -R root test
参数选项:
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown:更改文件属主,也可以同时更改文件属组
语法:
chown[–R] 属主名 文件名
chown[-R] 属主名:属组名 文件名
#chown[-R] bin test
#chown[-R] bin:root test
进入 /home/sunfeng 目录,将install.run的拥有者改为zhangsan这个账号:
将install.run的拥有者与群组改回为sunfeng:root
二、Linux用户权限ACL权限
ACL文件权限管理也是UGO权限的加强版。 UGO基本权限:只能一个用户、一个组合、其他人这三个对象进行授权 ACL文件权限管理:设置不同用户,不同的基本权限(r、w、x),对象数量不同 UGO是针对用户、组、其他人三个对象的文件授权,ACL是可以针对指定用户指定组和其他人的文件授权。 1、语法setfacl -m u:用户或用户组:权限 文件 //给指定用户或组授权
getfacl 文件 //查看文件有哪些ACL权限
2、创建文件、文件夹及用户
准备一个测试用的文件夹以及用户在文件夹内创建一个文件
mkdir /home/test //创建文件夹
touch /home/test/测试.txt //创建文件“测试.txt”
useradd wangwu //创建用户wangwu
useradd lisi //创建用户lisi
lslogins //列出系统中所有用户的信息
3、设置ACL权限
查看新创好的文件有哪些ACL权限
[root@localhost home]# getfacl test/测试.txt //查看“测试.txt”的ACL权限
# file: test/测试.txt //文件的位置
# owner: root //文件拥有者
# group: root //文件所属组
user::rw- //用户的权限
group::r-- //组的权限
other::r-- //其他人的权限
设置wangwu、lisi权限
[root@localhost home]# setfacl -m u:lisi:rwx /home/test/测试.txt //给lisi授予可以对文件读写执行的权利
[root@localhost home]# setfacl -m u:wangwu:rwx /home/test/测试.txt //给wangwu授予可以对文件读写执行的权利
[root@localhost home]# getfacl test/测试.txt //查看“测试.txt”的ACL权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx //权限增加成功
user:wangwu:rwx //权限增加成功
group::r--
mask::rwx
other::r--
说明:在设置ACL权限之后使用 ls 查看文件权限会不一样,文件的权限会叠加上ACL的权限,具体的权限内容还是需要用getfacl来查看,ACL权限使用一getfacl命令查看的为主。
[root@localhost ~]# ls -l /home/test/测试.txt
-rw-rwxr--+ 1 root root 0 8月 2 17:43 /home/test/测试.txt
用ls命令查看发现权限多了一个+号,代表着有ACL权限,具体权限用getfacl命令查看。
对组 user 群组进行ACL授权
[root@localhost home]# setfacl -m g:user:rw test/测试.txt //给user组授予对文件“测试.txt”读写权限
[root@localhost home]# getfacl test/测试.txt //查看“测试.txt”ACL权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx
user:wangwu:rwx
group::r--
group:user:rw- //权限设置完成
mask::rwx
other::r--
对其他人授权
[root@localhost home]# setfacl -m o::rwx test/测试.txt //设置其他人对文件“测试.txt”的读写执行的权限
[root@localhost home]# getfacl test/测试.txt //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx
user:wangwu:rwx
group::r--
group:user:rw-
mask::rwx
other::rwx //权限设置完成
注意:setfacl -m o::rwx test/测试.txt
,o后面有两个冒号,其他人不用写用户名,虽然不用写用户名但仍然要加冒号表示一个站位,不然命令无法执行。
删除ACL权限
命令setfacl -x 对象:名称 文件名
删除用户的权限
[root@localhost home]# setfacl -x u:lisi test/测试.txt //删除用户lisi的文件权限
[root@localhost home]# getfacl test/测试.txt //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:wangwu:rwx //仅剩用户wangwu,lisi的权限被移除
group::r--
group:user:rw-
mask::rwx
other::rwx
删除组的权限
[root@localhost home]# setfacl -x g:user test/测试.txt //删除组user的权限
[root@localhost home]# getfacl test/测试.txt //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:wangwu:rwx
group::r--
mask::rwx
other::rwx
清空所有设置的ACL权限(将文件的ACL权限恢复到默认)
命令:setfacl -b 文件
[root@localhost home]# setfacl -b test/测试.txt //清空ACL的所有扩展权限
[root@localhost home]# getfacl test/测试.txt //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
group::r--
other::rwx
[root@localhost home]# ls -l test/测试.txt
-rw-r--rwx. 1 root root 0 8月 2 17:43 test/测试.txt //原本的+号不在了,没有设置ACL权限
语法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
选项 | 说明 |
---|---|
-m, --modify=acl | 更改文件的访问控制列表 |
-M, --modify-file=file | 从文件读取访问控制列表条目更改 |
-x, --remove=acl | 根据文件中访问控制列表移除条目 |
-X, --remove-file=file | 从文件读取访问控制列表条目并删除 |
-b, --remove-all | 删除所有扩展访问控制列表条目 |
-k, --remove-default | 移除默认访问控制列表 |
–set=acl | 设定替换当前的文件访问控制列表 |
–set-file=file | 从文件中读取访问控制列表条目设定 |
–mask | 重新计算有效权限掩码 |
-n, --no-mask | 不重新计算有效权限掩码 |
-d, --default | 应用到默认访问控制列表的操作 |
-R, --recursive | 递归操作子目录 |
-L, --logical | 依照系统逻辑,跟随符号链接 |
-P, --physical | 依照自然逻辑,不跟随符号链接 |
–restore=file | 恢复访问控制列表,和“getfacl -R”作用相反 |
–test | 测试模式,并不真正修改访问控制列表属性 |
-v, --version | 显示版本并退出 |
-h, --help | 显示本帮助信息 |
上一篇:Linux中删除指定日期之前的文件 下一篇:块存储/文件存储/对象存储区别
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。