权限管理
1. 权限简介
文件的权限主要针对三类对象进行定义:
owner:属主,u
group:属组,g
other:其它,o
1.1 权限对文件的作用
r :读取文件内容(cat、more、head、tail)
w:编辑、新增、修改文件内容(vi、echo),但不包含删除文件
x:可执行
对文件来讲:最高权限是执行权限(x),所以文件要少赋予执行权限。
1.2 权限对目录的作用
r:可以查询目录下文件名(ls)。
w: 具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切此目录下文件或目录。(touch、rm、mv、cp)。
x:可以进入目录(cd)。
对目录来讲:最高权限是写权限(w),所以目录要少赋予写权限。
注:0没有任何权限,5(rx)可以查看和进入,7(rwx)拥有最高权限;1、4、6权限对目录没有意义
2. 权限管理命令
2.1 修改权限的命令chmod
修改三类用户的权限:
语法:chmod MODE file,...
-R //递归修改权限
[lw@localhost ~]$ ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[lw@localhost ~]$ ll 1
总用量 0
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 2.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 3.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 4.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 item
[lw@localhost ~]$ chmod -R 777 1
[lw@localhost ~]$ ll
总用量 8
drwxrwxrwx. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[lw@localhost ~]$ ll 1
总用量 0
-rwxrwxrwx. 1 lw lwf 0 11月 8 16:38 2.c
-rwxrwxrwx. 1 lw lwf 0 11月 8 16:38 3.c
-rwxrwxrwx. 1 lw lwf 0 11月 8 16:39 4.c
-rwxrwxrwx. 1 lw lwf 0 11月 8 16:39 item
修改某类用户或某些类用户权限:
u,g,o,a(用户类别)
chmod 用户类别=MODE file,.....
chmod 用户类别=MODE,用户类别=MODE file,.....
[lw@localhost 1]$ ll
总用量 0
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 2.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 3.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 4.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 item
[lw@localhost 1]$ chmod u=rwx 2.c
[lw@localhost 1]$ ll
总用量 0
-rwxr--r--. 1 lw lwf 0 11月 8 16:38 2.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 3.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 4.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 item
修改某类的用户某位或某些位权限:
u,g,o,a(用户类别)
chmod 用户类别+|-MODE file,.....
chmod 用户类别+|-MODE,用户类别+|-MODE file,.....
chmod +|-MODE file,.....
[lw@localhost 1]$ ll
总用量 0
-rwxr--r--. 1 lw lwf 0 11月 8 16:38 2.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:38 3.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 4.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 item
[lw@localhost 1]$ ll
总用量 0
-rwxr--r--. 1 lw lwf 0 11月 8 16:38 2.c
-rw-rwxr--. 1 lw lwf 0 11月 8 16:38 3.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 4.c
-rw-r--r--. 1 lw lwf 0 11月 8 16:39 item
2.2 修改文件属主和属组的命令chown
chown命令只有管理员可以使用。
chown USERNAME file,...
-R //修改目录及其内部文件的属主
chown USERNAME:GROUPNAME file,...
chown USERNAME.GROUPNAME file,...
[root@localhost abc]# ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
drwxr-xr-x. 2 lw lwf 16 11月 9 15:05 3
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost abc]# ll 3
总用量 0
-rw-r--r--. 1 lw lwf 0 11月 9 15:05 12
[root@localhost abc]# chown -R root.root 3
[root@localhost abc]# ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
drwxr-xr-x. 2 root root 16 11月 9 15:05 3
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost abc]# ll 3
总用量 0
-rw-r--r--. 1 root root 0 11月 9 15:05 12
2.3 修改文件的属组命令chgrp
语法:chgrp [OPTION]... GROUP FILE...
-R //递归修改
[root@localhost abc]# ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
drwxr-xr-x. 2 root root 16 11月 9 15:05 3
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost abc]# ll 3
总用量 0
-rw-r--r--. 1 root root 0 11月 9 15:05 12
[root@localhost abc]# chgrp -R lwf 3
[root@localhost abc]# ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 lw lwf 6 11月 8 16:45 2
drwxr-xr-x. 2 root lwf 16 11月 9 15:05 3
-rw-r--r--. 1 lw lwf 4 11月 9 10:58 a
-rw-r--r--. 1 root lwf 3 11月 9 10:59 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost abc]# ll 3
总用量 0
-rw-r--r--. 1 root lwf 0 11月 9 15:05 12
[root@localhost abc]#
3. 遮罩码
为什么文件创建以后默认权限是644?
为什么目录创建以后默认权限是755?
这是由遮罩码umask来控制的。
从名字就能看出来,遮罩码umask是用来隐藏一些权限的。举例:如果你不想让人家认出你,你会怎么办?
文件最终的权限为:
- 666-umask
目录最终的权限为:
- 777-umask
文件默认是不能具有执行权限的,如果算得的结果有执行权限则将其权限整体加1
[root@localhost 3]# umask
0022
[root@localhost 3]# touch 1
[root@localhost 3]# ll
总用量 0
-rw-r--r--. 1 root root 0 11月 9 15:10 1
-rw-r--r--. 1 root lwf 0 11月 9 15:05 12
[root@localhost 3]# umask 0017
[root@localhost 3]# touch 3
[root@localhost 3]# ll
总用量 0
-rw-r--r--. 1 root root 0 11月 9 15:10 1
-rw-r--r--. 1 root lwf 0 11月 9 15:05 12
-rw-r--r--. 1 root root 0 11月 9 15:10 2
-rw-rw----. 1 root root 0 11月 9 15:11 3
4. linux安全上下文与特殊权限
4.1 linux安全上下文
前提:进程有属主和属组;文件有属主和属组
任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;
启动为进程后,其进程的属主为发起者,属组为发起者所属的组
进程访问文件时的权限取决于进程的发起者:
- 进程的发起者是文件的属主时,则应用文件属主权限
- 进程的发起者是文件的属组时,则应用文件属组权限
- 应用文件“其它”权限
4.2 特殊权限
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
SUID(4) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
chmod u+s file
chmod u-s file
//如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
[lw@localhost ~]$ vim a
[lw@localhost ~]$ ll
总用量 4
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 root lwf 43 11月 9 15:11 3
-rw-r--r--. 1 lw lwf 4 11月 9 15:21 a
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost 3]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2294256 4月 11 2018 /usr/bin/vim
[root@localhost 3]# chmod u+s /usr/bin/vim
[root@localhost 3]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2294256 4月 11 2018 /usr/bin/vim
[lw@localhost ~]$ vim b
[lw@localhost ~]$ ll
总用量 8
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxr-xr-x. 2 root lwf 43 11月 9 15:11 3
-rw-r--r--. 1 lw lwf 4 11月 9 15:21 a
-rw-r--r--. 1 root lwf 8 11月 9 15:23 b
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[root@localhost 3]# ps -ef |grep /home/abc/b
root 4247 1493 0 15:24 pts/0 00:00:00 grep --color=auto /home/abc/b
SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组默认情况下,用户创建文件时,其属组为此用户所属的基本组;一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组,为此设定了SGID的目录的属组
chmod g+s DIR
chmod g-s DIR
//如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
[root@localhost abc]# chmod g+sx 2
[root@localhost abc]# chmod o+rwx 2
[root@localhost abc]# ll
总用量 0
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxrwsrwx. 2 root root 6 11月 9 15:31 2
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[lw@localhost 2]$ touch 111
[lw@localhost 2]$ ll
总用量 0
-rw-r--r--. 1 lw root 0 11月 9 15:33 111
[root@localhost abc]# chmod g-s 2
[root@localhost abc]# ll
总用量 0
drwxr-xr-x. 2 lw lwf 51 11月 8 16:39 1
drwxrwxrwx. 2 root root 17 11月 9 15:33 2
drwxr-xr-x. 2 lw lwf 83 11月 8 16:29 family
[lw@localhost 2]$ touch 3
[lw@localhost 2]$ ll
总用量 0
-rw-r--r--. 1 lw root 0 11月 9 15:33 111
-rw-r--r--. 1 lw lwf 0 11月 9 15:35 3
Sticky(1) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
[root@localhost opt]# mkdir abc
[root@localhost opt]# ll
总用量 0
drwxrw----. 2 root root 6 11月 9 15:40 abc
[root@localhost opt]# chmod 777 abc/
[root@localhost opt]# ll
总用量 0
drwxrwxrwx. 2 root root 6 11月 9 15:40 abc
[root@localhost opt]# touch abc/a
[root@localhost opt]# touch 1
[lw@localhost ~]$ cd /opt
[lw@localhost opt]$ cd abc/
[lw@localhost abc]$ touch b
[lw@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 b
[lw@localhost abc]$ touch 2
[root@localhost abc]# ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:42 1
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 2
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 b
[root@localhost abc]# su - lww
[lww@localhost ~]$ cd /opt/abc/
[lww@localhost abc]$ touch c 3
[lww@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:42 1
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 2
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 3
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 b
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 c
[lww@localhost abc]$ rm -f 1 2 3
[lww@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 b
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 c
[root@localhost abc]# chmod o+t /opt/abc/
[root@localhost abc]# ll /opt/
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 1
drwxrwxrwt. 2 root root 33 11月 9 15:45 abc
[lw@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-r--r--. 1 lw lwf 0 11月 9 15:41 b
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 c
[lw@localhost abc]$ rm -rf a b c
rm: 无法删除"a": 不允许的操作
rm: 无法删除"c": 不允许的操作
[lw@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 c
5. 文件系统访问控制列表facl
facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。
语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m //设定
u:UID:perm
g:GID:perm
//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。
[lw@localhost opt]$ cd abc/
-bash: cd: abc/: 权限不够
[root@localhost opt]# setfacl -m u:lw:rx /opt/abc/
[root@localhost opt]# getfacl /opt/abc/
getfacl: Removing leading '/' from absolute path names
# file: opt/abc/
# owner: root
# group: root
user::rwx
user:lw:r-x
group::---
mask::r-x
other::---
[lw@localhost opt]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 1
drwxr-x---+ 2 root root 24 11月 9 15:47 abc
[lw@localhost opt]$ cd abc/
[lw@localhost abc]$ ll
总用量 0
-rw-rw----. 1 root root 0 11月 9 15:41 a
-rw-rw-r--. 1 lww lww 0 11月 9 15:42 c
-x //取消
u:UID
g:GID
[root@localhost opt]# setfacl -x u:lw /opt/abc/
[root@localhost opt]# getfacl /opt/abc/
getfacl: Removing leading '/' from absolute path names
# file: opt/abc/
# owner: root
# group: root
user::rwx
group::---
mask::---
other::---
[lw@localhost opt]$ cd abc/
-bash: cd: abc/: 权限不够
-b //Remove all
语法:getfacl [-aceEsRLPtpndvh] file ...
文件权限应用次序:
默认情况下:
Owner --> Group --> Other
有设置facl的情况下:
Owner --> facl,user --> Group --> facl,group --> Other
6. 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,运行哪些命令
别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
lw ALL=(root) NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/userdel
[lw@localhost opt]$ sudo useradd first
[lw@localhost opt]$ id first
uid=1001(first) gid=1002(first) 组=1002(first)
[lw@localhost opt]$ sudo userdel -r first
[sudo] lw 的密码:
别名分类:
-
用户别名:
User_Alias NETWORKADMIN =
- 用户的用户名
- 组名,使用%引导
- 还可以其它已经定义的用户别名
- 主机别名:
- Host_Alias =
- 主机名
- IP地址
- 网络地址
- 其它主机别名
- Runas别名
Runas_Alias =
- 用户名
- %组名
- 其它的Runas别名
- 命令别名:
Cmnd_Alias =
- 命令路径
- 目录(此目录内的所有命令)
- 其它已定义的命令别名
sudo命令语法:sudo [options] COMMAND
-V //显示版本编号
-h //会显示版本编号及指令的使用方式说明
-l //列出当前用户可以使用的所有sudo类命令
-v //因为sudo在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会问密码
-k //让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效
-b //将要执行的指令放在后台执行
-u USERNAME //以指定的用户名执行命令,默认为root
7. 管理命令
w //显示当前登录到系统的用户有哪些,以及其正在做什么
[lw@localhost opt]$ w
16:52:20 up 16:43, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 五08 8:19m 0.03s 0.03s -bash
root pts/0 192.168.111.1 14:36 1:08 1.30s 1.30s -bash
lw pts/1 192.168.111.1 14:36 4.00s 0.34s 0.02s w
sleep //睡眠,写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上sleep #,表示停顿#秒后再执行后面的命令
sleep NUMBER[SUFFIX]...
SUFFIX:
s:秒,默认
m:分
h:小时
d:天
[root@localhost opt]# sleep 20;touch b;ll
总用量 4
-rw-r--r--. 1 root root 4003 11月 12 16:44 \
-rw-rw----. 1 root root 0 11月 9 15:41 1
-rw-r--r--. 1 root root 0 11月 12 16:54 a
drwx------+ 2 root root 24 11月 9 15:47 abc
-rw-r--r--. 1 root root 0 11月 12 16:55 b
last //显示/var/log/wtmp文件,显示用户登录历史及系统重启历史
-n # //显示最近#次的相关信息
[root@localhost opt]# last -5
lw pts/1 192.168.111.1 Mon Nov 12 14:36 still logged in
root pts/0 192.168.111.1 Mon Nov 12 14:36 still logged in
lw pts/1 192.168.111.1 Mon Nov 12 08:35 - 13:49 (05:13)
root pts/0 192.168.111.1 Mon Nov 12 08:34 - 13:49 (05:14)
root pts/0 192.168.111.1 Fri Nov 9 16:17 - 17:15 (00:58)
wtmp begins Thu Nov 8 18:12:14 2018
lastb //显示/var/log/btmp文件,显示用户错误的登录尝试
-n # //显示最近#次的相关信息
[root@localhost opt]# lastb -5
root tty1 Fri Nov 9 08:28 - 08:28 (00:00)
root tty1 Thu Nov 8 11:05 - 11:05 (00:00)
root tty1 Thu Nov 8 11:00 - 11:00 (00:00)
root tty1 Thu Nov 8 10:55 - 10:55 (00:00)
root tty1 Thu Nov 8 10:54 - 10:54 (00:00)
btmp begins Thu Nov 8 18:13:48 2018
lastlog //显示每个用户最近一次成功登录信息
-u username //显示特定用户最近的登录信息
[root@localhost opt]# lastlog -u lw
用户名 端口 来自 最后登陆时间
lw pts/1 192.168.111.1 一 11月 12 14:36:57 +0800 2018
basename
//显示路径基名
[root@localhost opt]# basename /home/abc/1/2.c
2.c
dirname
//显示路径过程
[root@localhost opt]# dirname /home/abc/1/2.c
/home/abc/1
浙公网安备 33010602011771号