权限简介
文件的权限主要针对三类对象进行定义:
owner:属主,u
group:属组,g
other:其它,o
每个文件针对每个访问者都定义了三种权限:
| 权限 | 对应的操作对象 | 权限说明 |
|---|---|---|
| r | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
| w | 文件 | 可写,可以编辑或删除此文件 |
| x | 文件 | 可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行 |
| r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
| w | 目录 | 可以在此目录中创建文件,也可删除此目录中的文件 |
| x | 目录 | 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息 |
进制转换

权限管理命令
修改权限的命令chmod
[root@localhost ~]# mkdir haha
[root@localhost ~]# ls haha/
[root@localhost ~]# ll
总用量
-rw-------. 1 root root 1194 3月 3 10:27 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 7月 6 00:35 haha
-rw-r--r--. 1 root root 1421 3月 3 10:28 initial-setup-ks.cfg
[root@localhost ~]# chmod 444 haha/
[root@localhost ~]# ll
总用量 3
-rw-------. 1 root root 1194 3月 3 10:27 anaconda-ks.cfg
dr--r--r--. 2 root root 6 7月 6 00:35 haha
-rw-r--r--. 1 root root 1421 3月 3
-R 递归修改权限
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir j n h k
[root@localhost opt]# ls
h j k n
[root@localhost opt]# ls -l
总用量 0
drwxr-xr-x. 2 root root 6 7月 6 00:38 h
drwxr-xr-x. 2 root root 6 7月 6 00:38 j
drwxr-xr-x. 2 root root 6 7月 6 00:38 k
drwxr-xr-x. 2 root root 6 7月 6 00:38 n
[root@localhost opt]# chmod -R 666 /opt/
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 root root 6 7月 6 00:38 h
drw-rw-rw-. 2 root root 6 7月 6 00:38 j
drw-rw-rw-. 2 root root 6 7月 6 00:38 k
drw-rw-rw-. 2 root root 6 7月 6 00:38 n
[root@localhost opt]#
//修改三类用户的权限:
//修改某类用户或某些类用户权限:
//u,g,o,a(用户类别)
//chmod 用户类别=MODE file,.....
//chmod 用户类别=MODE,用户类别=MODE file,.....
//修改某类的用户某位或某些位权限:
//u,g,o,a(用户类别)
//chmod 用户类别+|-MODE file,.....
//chmod 用户类别+|-MODE,用户类别+|-MODE file,.....
//chmod +|-MODE file,.....
修改文件属主和属组的命令chown
[root@localhost opt]# ll -s
总用量 0
0 drw-rw-rw-. 2 root root 6 7月 6 00:38 h
[root@localhost opt]# chown haha h //修改属主
[root@localhost opt]# ll -s
总用量 0
0 drw-rw-rw-. 2 haha root 6 7月 6 00:38 h
[root@localhost opt]# chown .haha h //修改属组,可以用chgep haha h
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 haha haha 6 7月 6 00:38 h
-R 修改目录及其内部文件的属主(递归修改)
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 root root 6 7月 6 00:38 h
drw-rw-rw-. 2 root root 6 7月 6 00:38 j
drw-rw-rw-. 2 root root 6 7月 6 00:38 k
drw-rw-rw-. 2 root root 6 7月 6 00:38 n
[root@localhost opt]# chown -R haha /opt/
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 haha root 6 7月 6 00:38 h
drw-rw-rw-. 2 haha root 6 7月 6 00:38 j
drw-rw-rw-. 2 haha root 6 7月 6 00:38 k
drw-rw-rw-. 2 haha root 6 7月 6 00:38 n
遮罩码
为什么文件创建以后默认权限是644? 为什么目录创建以后默认权限是755?
这是由遮罩码umask来控制的。
文件最终的权限为:
666-umask
目录最终的权限为:
777-umask
权限简介linux特殊权限
权限简介
前提:进程有属主和属组;文件有属主和属组
任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;
启动为进程后,其进程的属主为发起者,属组为发起者所属的组
进程访问文件时的权限取决于进程的发起者:
进程的发起者是文件的属主时,则应用文件属主权限
进程的发起者是文件的属组时,则应用文件属组权限
应用文件“其它”权限
特殊权限
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
SUID(4) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
chmod u+s file
chmod u-s file
//如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
//默认情况下,用户创建文件时,其属组为此用户所属的基本组;
//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组 \
//为此设定了SGID的目录的属组
chmod g+s DIR
chmod g-s DIR
//如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
Sticky(1) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
4755 //有SUID,文件权限为755
2755 //有SGID,文件权限为755
1755 //有Sticky,文件权限为755
//这里前面的4、2、1分别表示SUID、SGID、Sticky
文件系统访问控制列表facl
facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。
//语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m //设定
[root@localhost opt]# setfacl -m u:haha:r-- /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
user:haha:r--
group::rw-
mask::rw-
other::rw-
u:UID:perm
g:GID:perm
//setfacl -m u:test:rw file
//setfacl -m g:test:rw file
//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如:\
//setfacl -m d:u:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限
-x //取消
>[root@localhost opt]# setfacl -x u:haha /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
group::rw-
mask::rw-
other::rw-
u:UID
g:GID
//setfacl -x u:test file
//setfacl -x g:test file
-b //Remove all
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
user:haha:r--
group::rw-
group:hh:rwx
mask::rwx
other::rw-
[root@localhost opt]# setfacl -b /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
group::rw-
other::rw-
//语法:getfacl [-aceEsRLPtpndvh] file ...
//getfacl file
sudo提权
sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:
who which_hosts=(runas) command
who:User_Alias,表示运行命令者的身份
which_hosts:Host_Alias,通过哪些主机
runas:Runas_Alias,以哪个用户的身份
command:Cmnd_Alias,运行哪些命令
别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:
-
用户别名:
1.User_Alias NETWORKADMIN =
2.用户的用户名
3.组名,使用%引导
4.还可以其它已经定义的用户别名 -
主机别名:
1.Host_Alias =
2.主机名
3.IP地址
4.网络地址
5.其它主机别名 -
Runas别名:
1.Runas_Alias =
2.用户名
3.%组名
4.其它的Runas别名 -
命令别名:
1.Cmnd_Alias =
2.命令路径
3.目录(此目录内的所有命令)
4.其它已定义的命令别名
本文详细介绍了Linux权限管理的基础概念,包括文件和目录权限的三个类别(owner、group、other)、进制转换、chmod命令的用法、chown操作权限更改、遮罩码的作用、特殊权限(SUID、SGID、Sticky)以及facl文件访问控制列表。还涵盖了sudo提权的概念和sudoers配置。
316

被折叠的 条评论
为什么被折叠?



