Lupinus

Re:从零开始的go学习生活(`・ω・´)

0%

[用户管理]

用户管理

Linux中用户的概述

用户指的是能够正常登录Linux或windows系统

与windows用户的区别:

  • 支持同一个用户多个设备同时登录

  • 支持不同的用户多个设备同时登录

用户的作用

1)系统上的每一个进程(运行的程序)都需要特定的用户运行

2)每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制

3)进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

查看系统中用户的命令

选项 说明
-u 查看当前登录用户的uid
-g 查看当前登录用户的gid
-n 配合-u或者-g一起使用
配合-u:查看当前登录用户uid对应的名字
配合-g:查看当前登录用户gid对应的名字
1
2
3
4
5
6
7
8
9
10
11
12
13
#查看指定用户的信息 
id:默认情况不加用户名则查看当前登录用户的信息

#语法
id [用户名]

[root@localhost ~]# id python
uid=1000(python) gid=1000(python) groups=1000(python)
uid=1000(roger) #UserID:用户id号
gid=1000(roger) #GroupID:用户组id号
groups=1000(roger) #该用户的所有组信息

ps:id不加任何参数查看的是当前登录用户

后台进程查看

1
2
3
4
5
6
[root@localhost ~]# ps -ef | less
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Apr01 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 Apr01 ? 00:00:00 [kthreadd]
root 3 2 0 Apr01 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 Apr01 ? 00:00:00 [kworker/0:0H]

系统用户相关的配置文件

1
2
3
4
/etc/passwd   #用户信息配置文件 
/etc/shadow #用户密码存储文件
/etc/group #用户组信息配置文件
/etc/gshadow #用户组密码存储文件

/etc/passwd

1
2
3
4
5
6
7
[root@localhost ~]# cat /etc/passwd
#文件内容
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin

/bin/bash:交由bash执行
/sbin/nologin:不允许用户登录
第一列 第二列 第三列 第四列 第五列 第六列 第七列
内容 dbus x 81 81 System message bus / /sbin/nologin
作用 用户名 密码占位符 UID GID 用户描述信息 用户家目录 用户登录的shell

image-20220402071657752

/etc/shadow

1
2
3
4
5
6
7
8
[root@localhost ~]# cat /etc/shadow
#文件内容
root:$6$YOE1El8va0a/N13b$E5HM/7RVJu4rY.Kbfp9iC2msOras3rWKzOzWZqmjnVBsFswaZXhz.TCrlbffyavK8nG61.19xOLJBoVrnb7Zb0::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::

*、!!:表示没有密码
第一列 第二列 第三列 第四列 第五列 第六列 第七列 第八列 第九列
内容 bin * 17834 0 99999 7 2 6627567
作用 用户名 密码(加密) 上一次修改密码从1970年到现在过了多少天 密码最少使用多少天,0代表没有限制 密码最多使用多少天 密码快过期前7天,提示修改密码 密码过期后2两天强制修改密码 账户失效时间 保留

image-20220402071741563

用户分类(约定、规范CentOS7)

用户UID 系统中含义
0 超级管理员用户
1-200 系统用户(系统自己创建的)
201-999 系统用户(可以手动创建)
1000+ 普通用户

chage命令修改用户信息(了解)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
-d  #设置最近一次更改密码时间, 0下次登陆系统强制修改密码 
-m #设置用户两次改变密码之间使用"最小天数"
-M #设置用户两次改变密码之间使用"最大天数"
-W #设置密码更改警告时间 将过期警告天数设为“警告天数”
-I #设置密码过期天数后, 密码为失效状态
-E #设置用户过期时间, 账户失效后无法登陆
-l #显示用户信息

#修改时间为2014年08月31日,和图中时间匹配,方便后续验证
[root@roger ~]# date -s '20140831'
Sun Aug 31 00:00:00 CST 2014
[root@roger ~]# date
Sun Aug 31 00:00:01 CST 2014
[root@roger ~]# useradd roger1
[root@roger ~]# echo "123" |passwd --stdin roger1
[root@roger ~]# tail -1 /etc/shadow
roger1:!!:16312:0:99999:7:::

#设置最近一次修改密码时间
[root@roger ~]# chage -d "2014-09-01" roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:0:99999:7:::

#设置最短使用密码时间
[root@roger ~]# chage -m 2 roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:2:99999:7:::

#设置密码最长使用时间
[root@roger ~]# chage -M 15 roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:2:15:7:::

#设置密码警告时间
[root@roger ~]# chage -W 6 roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:2:15:6:::
[root@roger ~]# chage -W 7 roger1
[root@roger ~]# tail -n1 /etc/shadow roger1:!!:16314:2:15:7:::

#设置密码过期时间
[root@roger ~]# chage -I 5 roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:2:15:6:5::

#设置用户过期时间
[root@roger ~]# chage -E "20115-08-31" roger1
[root@roger ~]# tail -n1 /etc/shadow
roger1:!!:16314:2:15:6:5:6627567:
[root@roger ~]# chage -l roger1 e
Last password change : Sep 01, 2014 #最近一次更改密码时间
Password expires : Sep 16, 2014 #密码过期时间
Password inactive : Sep 21, 2014 #密码失效时间
Account expires : Aug 31, 2015 #用户失效时间
Minimum number of days between password change : 2 #密码最短使用时间
Maximum number of days between password change : 15 #密码最长使用时间
Number of days of warning before password expires : 7 #密码过期前警告天数

#如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码, 不需要调整时间。
2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
[root@roger ~]# date -s "2014-09-12"
3.普通用户登陆系统后, 强制要求修改密码
[root@roger ~]# date -s "2014-09-18"
4.普通用户登陆系统后, 提示账户已过期
[root@roger ~]# date -s "2014-09-23"

用户操作命令

用户创建

选项 说明
-u 创建用户时指定用户的uid
-g 创建用户时指定用户的gid 指定用户组名(该组必须存在)
-G 创建用户时指定用户的附加组(该组必须存在)
-c 创建用户时指定用户的描述信息
-d 创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M 创建用户时不创建用户的家目录
-s 创建用户时指定用户登录的shell(默认是/bin/bash)
-r 创建用户时指定用户为系统用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
useradd
注意:创建用户在默认不指定组的情况下,会同时出跟该用户名相同的组,跟uid相同的gid,除非-g指定组,则 不会创建同名组

#语法
useradd [options] 用户名

#示例
[root@root ~]# useradd user01
[root@root ~]# useradd user02 -u 503 #创建用户usr02,指定uid
[root@root ~]# useradd user03 -d /aaa #创建用户user03 指定家目录
[root@root ~]# useradd user04 -M #创建用户user04,不创建家目录
[root@root ~]# useradd user05 -s /sbin/nologin #创建用户并指定shell
[root@root ~]# useradd user06 -g hr #创建用户,指定主组
[root@root ~]# useradd user07 -G sale #创建用户,指定附加组
[root@root ~]# useradd user08 -e 2014-04-01 #指定过期时间
[root@root ~]# useradd xxx -M -s /sbin/nologin #创建普通用户,但是没有家目录,不能登录系统
[root@root ~]# useradd -r yyy -s /sbin/nologin #yyy属于系统用户,uid处于系统用户 uid范围内

-M
启动程序不需要家目录,容易被黑客攻击

#报错1
[root@localhost ~]# useradd roger1 -u 666 -g 666
useradd: group '666' does not exist

原因:666这个组不存在,前提,-g必须加入到一个已存在的组

#报错2
[root@localhost ~]# mkdir /dsb
[root@localhost ~]# useradd hl1 -d /dsb/
useradd: warning: the home directory already exists. Not copying any file from skel directory into it.

原因:使用-d指定用户的家目录时,家目录不能提前创建

修改用户

选项 说明
-u 修改用户时指定用户的uid
-g 修改用户时指定用户的gid 指定用户组名(该组必须存在)
-G 修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
-a 修改用户附加组的时候,配合-a追加使用
-c 修改用户时指定用户的描述信息
-d 修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
-m 修改用户时迁移用户的家目录,必须配合-d使用
-s 修改用户时指定用户登录的shell(默认是/bin/bash)
-l 更改用户登录名
-L 锁定用户
-U 解锁用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
usermod

#语法
usermod [options] 用户名

#示例
[root@root ~]# usermod -e 2013-02-11 user1000 #修改过期时间
[root@root ~]# usermod -g group1 jj #修改主组
[root@root ~]# usermod -a -G group2 jj #修改附加组,-a添加,不加-a代表覆盖

#报错 [root@localhost ~]# usermod hl3 -l hl38
usermod: user hl3 is currently used by process 70107

原因:hl3用户当前正在被PID为70107进程占用,所以无法修改

删除用户

选项 说明
-r 递归删除,用户所有相关文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
userdel
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除

#语法
userdel [options] 用户名

#示例
[root@root ~]# userdel -r python

#警告
[root@localhost ~]# useradd test
useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists

原因:创建用户时,该用户以前创建过,但是在删除时没有加-r选项,没有删干净(用户同样可以创建出来)

查看用户其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#查看当前系统登录了哪些用户 
[root@localhost ~]# who
当前登录用户 终端 登录时间 从哪个IP登录
root pts/0 2022-04-01 11:00 (10.0.0.1)

#查看当前系统登录了哪些用户
[root@localhost ~]# w
当前系统时间 服务器总共运行时间 登录用户数 系统的平均负载
08:52:18 up 15 days, 2:03, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 Fri11 2.00s 1.59s 0.00s w
root pts/1 10.0.0.1 23Mar22 3days 0.54s 0.54s -bash
root pts/2 10.0.0.1 21Mar22 12days 0.04s 0.04s -bash
root pts/3 10.0.0.1 23Mar22 12days 0.06s 0.06s -bash

#查看当前登录的用户
[root@localhost ~]# whoami
root

创建用户流程

/etc/login.defs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[root@localhost ~]# grep -Ev '^#|^$' /etc/login.defs
[root@localhost ~]# grep -i '^[a-z]' /etc/login.defs
#指定创建用户时,默认邮件文件位置
MAIL_DIR /var/spool/mail

#创建用户默认密码最大使用天数
PASS_MAX_DAYS 99999

#创建用户默认密码最小使用天数(0代表无限)
PASS_MIN_DAYS 0

#密码最短位数
PASS_MIN_LEN 5

#密码过期警告
PASS_WARN_AGE 7

#普通用户,最小UID是1000
UID_MIN 1000

#普通用户,最大UID是60000
UID_MAX 60000

#系统用户,最小UID是201
SYS_UID_MIN 201

#系统用户,最大UID是999
SYS_UID_MAX 999

#普通用户组,最小GID是1000
GID_MIN 1000

#普通用户组,最大GID是60000
GID_MAX 60000

#系统用户组,最小GID是201
SYS_GID_MIN 201

#系统用户组,最大GID是999
SYS_GID_MAX 999

#默认创建用户的家目录
CREATE_HOME yes

#UMASK 077 指定用户创建家目录的默认权限
UMASK 077

#创建用户时,如果不用-g指定组,那么会默认创建出该用户的同名组
USERGROUPS_ENAB yes

#用户密码的加密方式
SHA512 ENCRYPT_METHOD SHA512

权限了解

1
2
3
4
5
6
7
8
9
10
11
12
13
r:读权限 4 
w:写权限 2
x:执行权限 1
-:没有权限 0
目录创建默认权限:0777 - umask
文件创建默认权限:0666 - umask

#如果当前用户的UID>199并且UID=GID,权限是umask 002否则权限是umask 022
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi

/etc/default/useradd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~]# cat /etc/default/useradd 

#如果创建用户不创建同名组,默认会将该用户加入GID为100的系统组中(users)
GROUP=100

ps:如果login.defs文件中的USERGROUPS_ENAB yes是no,该行配置才会生效

#指定用户默认创建家目录的位置
HOME=/home

#用户账户停权 -1永远不过期
INACTIVE=-1

#账号终止时间的设置,不设置不终止
EXPIRE=

#用户默认创建登录shell
SHELL=/bin/bash

#该目录下存放的是,用户的环境变量初始配置文件
SKEL=/etc/skel

#创建用户的同时,创建该用户的邮箱文件
CREATE_MAIL_SPOOL=yes

用户创建的流程

  • 1.执行useradd 命令 + 用户名

  • 2.查看执行命令是否有选项

  • 3.读取/etc/login.defs文件

  • 4.读取/etc/default/useradd文件

  • 5.如果没有-M则创建家目录

  • 6.根据配置文件中的 SKEL=/etc/skelskel下面的环境变量文件拷贝到家目录下

  • 7.用户信息记录到/etc/passwd文件中

  • 8.用户密码信息记录到/etc/shadow文件中

  • 9.用户组信息记录到/etc/group文件中

  • 10.用户组密码信息记录到/etc/gshadow文件中

用户的密码管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
passwd:给用户设置密码 

#语法:
passwd [用户名]

ps:如果不加用户名,则修改当前登录用户的密码,只有root用户能在passwd命令后加用户名

#修改其他用户密码
[root@localhost ~]# passwd python

#修改zls用户的密码
Changing password for user python.

#新密码
New password:
BAD PASSWORD: The password is a palindrome

#重复新密码
Retype new password:

#所有认证令牌更新成功
passwd: all authentication tokens updated successfully.

免交互方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
stdin:标准输入 
stdout:标准输出
stderr:错误输出

[root@localhost ~]# echo 'python' | passwd --stdin python
Changing password for user python.
passwd: all authentication tokens updated successfully.

#脚本创建100个用户
vim creat_user
#!/bin/bash
for i in `seq -w 10`;do
useradd roger$i
echo '123' | passwd --stdin roger$i
done

随机密码生成

1
2
3
4
tee:管道命令 
-a:append 追加

[root@localhost ~]# echo $RANDOM | tee -a /tmp/pass.txt | passwd --stdin roger001

用户组管理

随机密码生成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 #md5加密算法
[root@localhost ~]# echo 123 | md5sum
[root@localhost ~]# vim test.txt
[root@localhost ~]# md5sum test.txt > /tmp/md5.txt
[root@localhost ~]# md5sum -c /tmp/md5.txt
test.txt: OK

ps:只要文件篡改就检验失败

date:查看当前系统时间
date +%F-%T:2022-04-09-14:25:13
date +%F" "%T:2022-04-09 14:25:30
date +%F-%T | md5sum
#修改当前系统时间格式
date -s "2022/4/9 14:34:00"
#格式化时间
date +%Y-%m-%d
%Y:年
%m:月
%d:日
%H:时
%M:分
%S:秒
%F:年月日
%T:时分秒

#随机密码mkpasswd
-l:长度
-d:数字
-c:小写字母
-C:大写字母
-s:特殊符号

[root@test ~]# mkpasswd -l 13 -d 2 -c 2 -C 4 -s 2
uzC4nJ$UWh2{k

用户组管理

/etc/group

1
2
3
4
5
6
7
[root@localhost ~]# cat /etc/group 
root:x:0:

1.组名字
2.组密码占位符
3.GID
4.显示该组的附加成员

/etc/gshadow

1
2
3
4
5
6
7
[root@localhost ~]# cat /etc/gshadow
root:::roger01

1.组名字
2.组密码(空和!是没有密码)
3.组管理员
4.显示该组的附加成员

创建组groupadd

选项 说明
-g 指定组的gid
-r 指定gid范围201-999之间的系统组
1
2
3
4
5
6
7
8
9
10
11
12
13
groupadd

#语法
groupadd [options] 组名

#示例
[root@localhost ~]# groupadd workpress01
[root@localhost ~]# groupadd workpress02 -g 10000
[root@localhost ~]# tail -1 /etc/group
workpress02:x:10000:
[root@localhost ~]# groupadd workpress03 -r
[root@localhost ~]# tail -1 /etc/group
workpress03:x:996:

删除组groupdel

1
2
3
4
5
6
7
groupdel

#语法
groupdel 组名

#示例
[root@localhost ~]# groupdel workpress01

修改组groupmod

选项 说明
-g 修改组的gid
-n 修改组名字
1
2
3
4
5
6
7
8
9
10
11
12
groupmod

#语法
groupmod [options] 组名

#示例
[root@localhost ~]# groupmod -g 10002 workpress02
[root@localhost ~]# tail -1 /etc/group
workpress02:x:10002:
[root@localhost ~]# groupmod workpress02 -n workpress03
[root@localhost ~]# tail -1 /etc/group
workpress03:x:10002:

修改组密码(了解)

1
2
3
4
5
[root@zls ~]# groupadd devops
[root@zls ~]# gpasswd devops
Changing the password for group devops
New Password:
Re-enter new password:

切换基本组身份(了解)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#检查账户信息
[root@docker ~]# useradd zls
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls)

#切换普通用户
[root@docker ~]# su - zls

#创建新文件,并验证权限
[zls@docker ~]$ touch file_roots
[zls@docker ~]$ ll
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots

#切换组信息
[zls@docker ~]$ newgrp devops
Password:

#建立文件,检查权限
[zls@docker ~]$ touch file_test
[zls@docker ~]$ ll
total 0
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
-rw-r--r-- 1 zls devops 0 Jun 13 10:08 file_test

用户身份切换

Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境

如何在普通用户的情况下,完成日常工作?

su 切换用户,使用普通用户登录,然后使用su命令切换到root

  • 优点:简单,方便

  • 缺点:需要知道root密码,不安全,切换到root没有日志审计功能

sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户

  • 优点:安全,方便
  • 缺点:复杂

切换用户su

选项 说明
-c 不切换用户,以该用户身份执行
1
2
3
4
5
6
7
8
9
10
su

#语法
su - 用户名

#示例
#不加用户名默认切换root用户
[root@localhost ~]# su -
[root@localhost ~]# su - root -c "mkdir /root/python"
[root@localhost ~]# su - root -c "ls -l /root/python"

shell的种类

  • 交互式shell
    • 等待用户输入执行的命令(终端操作,需要不断提示):passwd
  • 非交互式shell
    • 执行shell脚本, 脚本执行结束后shell自动退出:su - 用户
  • 登录式shell
    • 需要输入用户名和密码,才可以登录
  • 非登录式shell
    • 不需要输入用户名和密码,就可以登录
    • 只加载~/.bashrc、/etc/bashrc 、/etc/profile.d/*.sh

系统环境变量文件

1
2
3
4
5
6
7
8
#局部环境变量
~/.bashrc
~/.bash_profile

#全局环境变量
/etc/profile:不能轻易修改
/etc/profile.d/*.sh:推荐在这里增加配置文件,更安全
/etc/bashrc:

环境变量加载顺序

  • /etc/profile
  • /etc/profile.d/*.sh
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

sudo提权

什么是sudo

  • sudo就是普通用户可以提权,执行root用户可以执行的命令

为什么要用到sudo

  • 如果在公司中,入职后,领导给运维的用户是普通用户,但是有些命令只能root执行

sudo如何使用

  • 1.系统的超级管理员(root)需要做sudo的配置(发一个兵符给指定的普通用户)

  • 2.普通用户只需要在,执行的命令之前,加上sudo即可

配置文件/etc/sudoers

1
2
3
4
5
6
7
 99 ## Allow root to run any commands anywhere 
100 root ALL=(ALL) ALL

1.用户名
2.主机名
3.角色名
4.命令名

编辑权限visudo

选项 说明
-c 检查语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#python用户提权
python ALL=(ALL) ALL
[root@localhost ~]# sudo passwd roger1
[sudo] password for python:
#普通用户无需输入密码
python ALL=(ALL) NOPASSWD:ALL

#主机别名
Host_Alias FILESERVERS = fs1, fs2
python FILESERVERS=(ALL) NOPASSWD:ALL

#角色别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
python FILESERVERS=(ALL) NOPASSWD:Cmnd_Alias SOFTWARE

Cmnd_Alias SOFTWARE = !/bin/rpm, !/usr/bin/up2date
python FILESERVERS=(ALL) NOPASSWD:Cmnd_Alias SOFTWARE

#用户组提权
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD:ALL

#主要用usermod给用户提权,把用户加到有权限的组里
usermod 用户名 -G 提权组

#报错
[root@localhost ~]# sudo ll
sudo: ll: command not found
原因:ll是别名,不是系统命令,sudo不走别名,只认识系统命令

/var/db/sudo

1
2
3
4
#密码过期文件
/var/db/sudo/lectured

通过Atime检验是否过期

sudo执行流程

15613875305374

总结

1
2
3
4
5
6
7
1.会修改visudo,添加用户提权 
2.给用户免密执行sudo的权限
3.自定义用户的可执行命令,和不可执行命令
4.给组分配提权的权限
5.提权不用修改visudo,只需要加入wheel组,即可

注意:除非企业中有要求,哪些命令需要用,哪些不能使用