用户和权限管理
1.用户
1.1.三种用户
超级管理员:权限最高
普通用户:权限受限
程序用户:不是给人登录使用的,给程序使用的。
注:在/etc/passwd文件中可以查看用户信息,登录用户一般结尾为/bin/bash,程序用户一般结尾为/sbin/nologin
用户初始配置文件/etc/skel
[root@localhost skel]# ll -a /etc/skel/
总用量 24
drwxr-xr-x. 3 root root 78 3月 21 04:42 .
drwxr-xr-x. 138 root root 8192 4月 7 18:56 ..
-rw-r--r--. 1 root root 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 root root 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 root root 231 8月 3 2017 .bashrc
drwxr-xr-x. 4 root root 39 3月 21 04:41 .mozilla
1.2.组
一个用户必须有一个基本组(有且只有一个),附加组可有可无,也可以多个。
查询用户uid、gid、组命令 id 用户名
[root@localhost etc]# id zy #查询用户uid gid 组 命令:id 用户名
uid=1000(zy) gid=1000(zy) 组=1000(zy)
1.3.UID和GID
系统靠uid来区别用户身份
uid(user id):用户的身份证
| centos7中uid范围 | 范围 |
|---|---|
| 超级管理员 | 0 |
| 普通用户 | 1000-60000 |
| 程序用户 | 1-999 |
gid(group id):用户组的身份证
1.4.用户相关的文件
1.4.1. /etc/passwd文件 用户信息文件
用户相关的文件的文件在/etc/passwd中
[root@localhost /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash #超级管理员
bin:x:1:1:bin:/bin:/sbin/nologin #程序用户
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
.
.
。
zy:x:1000:1000:zy:/home/zy:/bin/bash #普通用户
文本介绍:
以root:x:0:0:root:/root:/bin/bash为例
[root@localhost /]# cat /etc/passwd |grep ^root
root:x:0:0:root:/root:/bin/bash
#root:用户的名字
#x:密码的占位符
#0:uid
#0:gid
#root:备注信息
#/root:家目录位置
#/bin/bash:登陆时默认加载的shell
man 5 passwd 可以查询该文件的信息。
1.4.2./etc/shell文件 用户登录要用的文件
[root@localhost /]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
如果用户没有该目录下的文件,无法登录(nologin是程序用户,也无法登录,可以使用)
1.4.3./etc/shadow文件 用户密码文件
shadow文件:存放密码及密码策略的文件
[root@localhost /]# cat /etc/shadow
root:$6$AAF0BnBUCdYGUtBR$PblyYlBMNx3sLZ5r9CoLp8zTSOeJtW/4ehiyUggY/69gAROH1juTn1x.lB60iwH6m23GAEYAJDJ5aFTiX1dOU.::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
lp:*:17110:0:99999:7:::
sync:*:17110:0:99999:7:::
shutdown:*:17110:0:99999:7:::
.
.
.
zy:$6$7jOOQlWUYvDVsU8y$Qowgg1fgyzmRE2ogSkRzKA7o/RMBkI/nOb0VdjjXCuDjsDswg9cEPlFn/bWCWHYc3JGMWaSbdSgMYBYCaFMWy1::0:99999:7:::
2.useradd命令
| useradd 选项 用户名 | 含义 |
|---|---|
| 不加选项 用户名 | 新建一个用户 |
| -u | 指定uid |
| -s | 指定shell类型 |
| -m | 不建家目录 |
| -c | 备注信息 |
| -d | 指定家目录(可以是不存在的目录) |
| -e | 指定失效时间(yy-mm-dd) |
| -g | 指定基本组 |
| -G | 指定附加组 |
| -r | 随机生成一个1-999的用户并且不建家目录 |
不加选项的情况下新建用户
1.自动建立一个同名的基本组
2.自动建立一个同名的家目录,在/home下
2.1.对已有用户的属性进行修改
| usermod 选项 | 含义 |
|---|---|
| -l 新名字 旧名字 | 改名 |
| -L | 锁定用户 |
| 其余与useradd命令一致 |
2.2.删除用户
| userdel 选项 用户名 | 含义 |
|---|---|
| userdel 不加选项 用户名 | 删除用户,家目录还在变成无属主目录 |
| userdel -r 用户名 | 连同家目录一起删除 |
3.passwd命令
| passwd 选项 用户名 | 含义 |
|---|---|
| -d | 清空用户密码 |
| -l | 锁定 |
| -u | 解锁查看用户是否被锁定 |
| -S |
免交互设置密码
echo“123123” | passwd 用户名 --stdin
4.用户目录的权限与归属
4.1.u、g、o
[root@localhost mnt]# ls
123
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
#rwx:主权限
#r-x:组权限
#r-x:其他人权限
属主(u):文件的主人,文件的拥有者
属组(g):文件的拥有组
其他人(o):除上面两个人之外的人
4.2.权限
r:读权限 对文件:可以看内容 对文件夹:可以用ls看文件夹中的文件
w:写权限 对文件:可以修改内容 对文件夹:可以新建、删除、移动文件(夹)
x:执行权限 对文件:可以运行命令,颜色是绿色,执行权限是最小的权限,没有x权限,读写无法使用
注:所有人都没有x权限,超级管理员也没有,只要有任何一个用户有x权限,超级管理员就有x权限。
如果一个文件在文件夹下,用户删除文件和文件的权限无关,和文件所在的文件夹权限有关。
4.6.修改文件的权限
非数字法:
chmod 选项 指明属主(u)、组(g)、其他人(o)、所有人(a) 权限 文件名
| chmod | 含义 |
|---|---|
| + | 加权限 |
| - | 减权限 |
| = | 赋予 |
举例:
[root@localhost mnt]# ll
总用量 0
drwxrwxr-x. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod a-x 123 #给所有人不给予执行权限
[root@localhost mnt]# ll
总用量 0
drw-rw-r--. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod a+x 123 ##给所有人给予执行权限
[root@localhost mnt]# ll
总用量 0
drwxrwxr-x. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod g-w 123 #给组不给予写权限
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod a+rwx 123 #给所有人rwx权限
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod g=rx 123 ;chmod o=rx 123 #给g赋予rx权限;给o赋予rx权限
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
数字法:
chomd XXX 文件名
第一个X:u的权限
第二个X:g的权限
第三个X:o的权限
X范围(0-7 r=4 w=2 x=1 7=r+w+x 6=r+w 5=w+x)
| r | w | x | 十进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 2 |
| 0 | 1 | 1 | 3 |
| 1 | 0 | 0 | 4 |
| 1 | 0 | 1 | 5 |
| 1 | 1 | 0 | 6 |
| 1 | 1 | 1 | 7 |
举例:
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod 777 123 #赋予u、g、o对123的rwx权限
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod 000 123 #不赋予u、g、o对123的rwx权限
[root@localhost mnt]# ll
总用量 0
d---------. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod 444 123 #赋予u、g、o对123的r权限
[root@localhost mnt]# ll
总用量 0
dr--r--r--. 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# chmod 755 123 #赋予u对123的rwx权限,赋予g、o对123的rw权限
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
4.4.权限掩码 umask
umask:在linux中规定了新建文件夹和新建文件的落地权限
默认umask为0022,0022这是剔除的权限
| 权限掩码 umask 默认0022 | 各数字含义 |
|---|---|
| 第一位0 | 代表特殊权限 |
| 第二位0 | 代表属主权限 |
| 第三位2 | 代表属组权限 |
| 第四位2 | 代表其他人权限 |
在文件夹中:777是文件夹的最高权限,777(rwx rwx rwx)-022( - --- -w- -w-)=755(rwx r-x r-x),所以755就是文件夹的落地权限
在文件中:666是文件的最高权限(一般文件默认不设x权限,可手动添加x权限,因为x权限对于文件非常危险),666-022=644(rw- r-- r--),所以644就是文件的落地权限
由于文件一般不给予x权限,所以有可能遇到666-123=543(r-x r-- -wx)这种情况,由于666本身文件就没有执行权限,减去权限掩码123后,减法得出最终权限却出现了x权限,所以在这种情况时,直接奇数在+1,偶数不变,所以最终权限应该为644
4.5.三种特殊权限
| 三种特殊权限 | 含义 |
|---|---|
| suid权限 4 | 如果拥有这个权限,当用户使用这个命令程序时,把当前用户当成这个文件的属主。只能设置在属主位置上 |
| guid权限 2 | 如果拥有这个权限,当用户使用这个命令程序时,把当前用户当成这个文件的属组。只能设置在属组位置上 |
| sticky粘贴位 1 | /tmp只允该目录下的文件的拥有者删除自己的创建的文件,不允许其他人删除文件。只能设置在其他人位置上 |
举例
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 zy zy 33 3月 29 16:19 123
[root@localhost mnt]# chmod u+s 123|ll #该例子中chmod u+s=chmod 4755 为属主对文件增加suid权限
总用量 0
drwsr-xr-x. 2 zy zy 33 3月 29 16:19 123
[root@localhost mnt]# chmod g+s 123|ll #该例子中chmod g+s=chmod 2755 为属组对文件增加guid权限
总用量 0
drwsr-sr-x. 2 zy zy 33 3月 29 16:19 123
[root@localhost mnt]# chmod o+t 123|ll #该例子中chmod o+t=chmod 1755 为其他人增加sticky权限
总用量 0
drwsr-sr-t. 2 zy zy 33 3月 29 16:19 123
root@localhost mnt]# chmod -sst 123 #取消文件的sst权限 只有非数字法可以取消 数字法不可以。
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x. 2 zy zy 33 3月 29 16:19 123
5.chown命令
chown命令可以改变文件(夹)的属主和属组
| chown 属主:属组 文件名 | 含义 |
|---|---|
| chown -R 属主:属组 文件名 | 递归修改 |
| chown 属主 文件名 | 只修改文件的属主 |
| chown :属组 | 只修改文件的属组 |
| chown 属主:属组 文件名 | 属主属组都改变 |
举例:
[root@localhost mnt]# ll -R
.:
总用量 0
drwxr-xr-x. 2 root root 33 3月 29 16:19 123
./123:
总用量 0
-rw-r--r--. 1 root root 0 3月 29 16:19 1
-rw-r--r--. 1 root root 0 3月 29 16:19 2
-rw-r--r--. 1 root root 0 3月 29 16:19 3
[root@localhost mnt]# chown zy 123|ll -R #只修改123文件夹的属主为zy
.:
总用量 0
drwxr-xr-x. 2 zy root 33 3月 29 16:19 123 #属主由root变成zy
./123:
总用量 0
-rw-r--r--. 1 root root 0 3月 29 16:19 1
-rw-r--r--. 1 root root 0 3月 29 16:19 2
-rw-r--r--. 1 root root 0 3月 29 16:19 3
[root@localhost mnt]# chown zy:zy 123|ll -R #修改123文件夹的属主和属组为zy
.:
总用量 0
drwxr-xr-x. 2 zy zy 33 3月 29 16:19 123 #属主和属组由root变成zy
./123:
总用量 0
-rw-r--r--. 1 root root 0 3月 29 16:19 1
-rw-r--r--. 1 root root 0 3月 29 16:19 2
-rw-r--r--. 1 root root 0 3月 29 16:19 3
[root@localhost mnt]# chown -R zy:zy 123|ll -R #递归修改123文件夹的属主属组为zy
.:
总用量 0
drwxr-xr-x. 2 zy zy 33 3月 29 16:19 123
./123:
总用量 0
-rw-r--r--. 1 zy zy 0 3月 29 16:19 1 #123及下面的1、2、3文件属主属组都由root变成zy
-rw-r--r--. 1 zy zy 0 3月 29 16:19 2
-rw-r--r--. 1 zy zy 0 3月 29 16:19 3
6.ACL 访问控制列表
getfacl 文件名 查看权限
setfacl -m u:lisi:rwx passwd 单独给lisi对passwd的rwx权限
setfacl -x lisi passwd 解除lisi对passwd的权限
举例
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x+ 2 root root 33 3月 29 16:19 123
[root@localhost mnt]# getfacl 123 #查看123文件夹的权限
# file: 123
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x
[root@localhost mnt]# setfacl -m u:zy:rw 123 #单独给zy对123文件夹的rw权限
[root@localhost mnt]# getfacl 123
# file: 123
# owner: root
# group: root
user::rwx
user:zy:rw-
group::r-x
mask::rwx
other::r-x
[root@localhost mnt]# setfacl -x zy 123 #解除zy对123文件夹的rw权限
[root@localhost mnt]# getfacl 123
# file: 123
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x