用户user
- Linux用户:Username/UID
- 管理员: root ,用0来显示
- 普通用户:1-65535,此范围可突破
- 系统用户的uid号范围: 1-999 (CentOS7),主要留给系统中的软件程序使用,而不是给我们用户使用。
- 登陆用户的uid号范围: 1000+(CentOS7)
-u 可直接查看uid号
[root@CentOS7 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@CentOS7 ~]# id -u
0
[root@CentOS7 ~]# id lqx
uid=1000(lqx) gid=1000(lqx) groups=1000(lqx)
[root@CentOS7 ~]# id -u lqx
1000
- 利用
ps aux
查看系统中应用程序,进而查询应用程序的uid号
[root@CentOS7 ~]# id -u avahi
70
组group
可以把用户分类。批量指定权限,将不同的组设置不同的权限。
- 进程所能够访问资源的权限取决于进程的运行者的身份
- Linux组:Groupname/GID
- 管理员组:root, 0
- 普通组:
- 系统组:1-999(CENTOS7)
- 普通组:1000+(CENTOS7)
注:允许用户和组同名,且系统中默认存在。
主组必须有,辅助组可有可无。
[root@CentOS7 ~]# id lqx
uid=1000(lqx) gid=1000(lqx) groups=1000(lqx)
注: gid为组名,groups为辅助组
getent group
可查看到所有的组列表getent passwd
可查看到所有用户列表
[root@CentOS7 ~]# getent passwd lqx
lqx:x:1000:1000:lqx:/home/lqx:/bin/bash
注:命令后跟用户,可只查看某个用户信息。
- lqx:第一段指用户名
- x:第二段口令。因安全问题,已被屏蔽,早期版本直接显示口令。
- 1000:第三段用户uid
- 1000:第四段用户主组的id
- lqx: 第五段为主组id的描述
- home: 为家目录
- bash: shell类型,默认为bash
用户和组的配置文件
- Linux用户和组的主要配置文件:
- /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
- /etc/group:组及其属性信息
- /etc/shadow:用户密码及其相关属性
- /etc/gshadow:组密码及其相关属性
用户创建:useradd
- useradd [options] LOGIN
- -u UID
- -o 配合-u 选项,不检查UID的唯一性
- -g GID:指明用户所属基本组,可为组名,也可以GID
- -c “COMMENT”:用户的注释信息
- -d HOME_DIR: 以指定的路径(不存在)为家目录
- -s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中 - -G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在
- -N 不创建私用组做主组,使用users组做主组
- -r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
- -m 创建家目录,用于系统用户
- -M 不创建家目录,用于非系统用户
[root@CentOS7 ~]# useradd -r -s /sbin/nologin -u 77 -d /data/mylq -m -G lqx mylq
[root@CentOS7 ~]# getent passwd lq
[root@CentOS7 ~]# getent passwd mylq
mylq:x:77:77::/data/mylq:/sbin/nologin
[root@CentOS7 ~]# ls /data
f1 f1.ink f2 f22 log mylq
[root@CentOS7 ~]# ll /data
total 4
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1.ink
-rw-r--r--. 1 root root 0 Mar 23 11:48 f2
lrwxrwxrwx. 1 root root 2 Mar 23 12:02 f22 -> f2
-rw-r--r--. 1 root root 20 Mar 23 13:57 log
drwx------. 3 mylq mylq 78 Mar 23 16:05 mylq
[root@CentOS7 ~]# id mylq
uid=77(mylq) gid=77(mylq) groups=77(mylq),1000(lqx)
解析: 创建用户给数据库使用,所以为系统账号 -r
-s /sbin/nologin的shell类型为 nologin(开机不启动)
-u 77指定uid为77(可使用getent passwd | gerp 77来查看此id是否未被使用)
-d /data/mylq 指定家目录类型
-m 创建家目录
-G lq 指明辅助组
mylq 指定用户名
用户属性修改
usermod [OPTION] login
-s SHELL:新的默认SHELL
-c ‘COMMENT’:新的注释信息
-L 锁定用户
-U 取消锁定
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
[root@CentOS7 ~]# getent shadow tom lqx
lqx:$6$vcOfjxm4KqHN9Q4V$TirZ/4KvVedWR3oAmBAoKYzUt2JtLbxLtiY68K7QjIcADZILDPtlbPNW0Z0TfA4FFtSmsHPEiO4ZHKDyPHxA2/::0:99999:7:::
[root@CentOS7 ~]# usermod -L lqx
[root@CentOS7 ~]# getent shadow tom lqx
lqx:!$6$vcOfjxm4KqHN9Q4V$TirZ/4KvVedWR3oAmBAoKYzUt2JtLbxLtiY68K7QjIcADZILDPtlbPNW0Z0TfA4FFtSmsHPEiO4ZHKDyPHxA2/::0:99999:7:::
[root@CentOS7 ~]# usermod -U lqx
[root@CentOS7 ~]# getent shadow tom lqx
lqx:$6$vcOfjxm4KqHN9Q4V$TirZ/4KvVedWR3oAmBAoKYzUt2JtLbxLtiY68K7QjIcADZILDPtlbPNW0Z0TfA4FFtSmsHPEiO4ZHKDyPHxA2/::0:99999:7:::
解析:如果用户后面增加了感叹号即为锁定。(lqx:! 6 6 6vcof···),反之则解除锁定(lqx: 6 6 6vcof···)
删除用户
userdel [OPTION]… login
- -r: 删除用户家目录即所有数据;如果不加-r只是单纯删用户,家目录还存在。
[root@CentOS7 ~]# ll /data
total 4
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1.ink
-rw-r--r--. 1 root root 0 Mar 23 11:48 f2
lrwxrwxrwx. 1 root root 2 Mar 23 12:02 f22 -> f2
-rw-r--r--. 1 root root 20 Mar 23 13:57 log
drwx------. 3 mylqx mylqx 78 Mar 23 16:02 mylqx
[root@CentOS7 ~]# userdel -r mylqx
userdel: mylqx mail spool (/var/spool/mail/mylqx) not found
[root@CentOS7 ~]# ll /data
total 4
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1.ink
-rw-r--r--. 1 root root 0 Mar 23 11:48 f2
lrwxrwxrwx. 1 root root 2 Mar 23 12:02 f22 -> f2
-rw-r--r--. 1 root root 20 Mar 23 13:57 log
SU 切换用户
- su即swich user
- 用法:su [options…] [-] [user [args…]]
- 切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换 - root su至其他用户无须密码;非root用户切换时需要密码
- 换个身份执行命令:
su [-] UserName -c ‘COMMAND’
[root@CentOS7 ~]# su lqx
[lqx@CentOS7 root]$ pwd
/root
[lqx@CentOS7 root]$ exit
exit
[root@CentOS7 ~]# su - lqx
Last login: Sat Mar 23 16:27:00 CST 2019 on pts/2
[lqx@CentOS7 ~]$ pwd
/home/lqx
[lqx@CentOS7 ~]$ su root
Password:
[root@CentOS7 lqx]#
注:以root降级切换至用户,不需要口令;如果以用户切换至root则需要口令。
利用管道修改口令
- –stdin:从标准输入接收用户密码
echo “PASSWORD” | passwd --stdin USERNAME**
[root@CentOS7 ~]# echo 123456 | passwd --stdin lqx
Changing password for user lqx.
passwd: all authentication tokens updated successfully.
groupadd 建组
- gtoupadd name建组
- groupdel name删组
[root@CentOS7 ~]# groupadd lq
[root@CentOS7 ~]# id lqx
uid=1000(lqx) gid=1000(lqx) groups=1000(lqx)
[root@CentOS7 ~]# usermod -G lq lqx
[root@CentOS7 ~]# id lqx
uid=1000(lqx) gid=1000(lqx) groups=1000(lqx),1001(lq)
[root@CentOS7 ~]# groupdel lq
解析:创建组lq;加入到lqx的附加组。如果是主组加就是-g。-G是附加组,不修改原来的主组,只是新增加一个组。
文件权限
- 文件属性
[root@CentOS7 data]# ll f1
-rw-r--r--. 1 root root 0 Mar 23 11:48 f1
[root@CentOS7 data]# chown lqx f1
[root@CentOS7 data]# ll f1
-rw-r--r--. 1 lqx root 0 Mar 23 11:48 f1
[root@CentOS7 data]# chgrp bin f1
[root@CentOS7 data]# ll f1
-rw-r--r--. 1 lqx bin 0 Mar 23 11:48 f1
[root@CentOS7 data]# chown root.root f1
[root@CentOS7 data]# ll f1
-rw-r--r--. 1 root root 0 Mar 23 11:48 f1
解析:
- 使用
chown name
将f1的所有者root修改为lqx - 使用
chgrp name
将f1的所属组root修改为bin - 使用
chown name.name
将f1的所属组和所有者都改为root
文件的权限
- 主要针对三类对象进行定义
owner: 属主, u
group: 属组, g
other: 其他, o - 每个文件针对每类访问者都定义了三种权限
r: Readable
w: Writable
x: eXcutable - 文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程 - 目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
文件属性
- chown 设置文件的所有者
- chgrp 设置文件的属组信息
[root@CentOS7 data]# ll f1
-rw-r--r--. 2 root root 0 Mar 23 11:48 f1
[root@CentOS7 data]# chmod u-rw,g=rw,o=rw f1
[root@CentOS7 data]# ll f1
----rw-rw-. 2 root root 0 Mar 23 11:48 f1
[root@CentOS7 data]# chmod u+rwx f1
[root@CentOS7 data]# ll f1
-rwxrw-rw-. 2 root root 0 Mar 23 11:48 f1
文件权限操作
- 文件权限(r w x)
chmod
文件权限操作命令
[root@CentOS7 data]# ll f1
-rwxrw-rw-. 2 root root 0 Mar 23 11:48 f1
[root@CentOS7 data]# chmod 444 f1
[root@CentOS7 data]# ll f1
-r--r--r--. 2 root root 0 Mar 23 11:48 f1
解析:rw为1,-为0,利用二进制转换10进制,即r–=4
也可直接使用数字法修改权限,如上图所示,r=4、w=2、x=1,-=0。输入444即可将f1文件从rwxrw-rw-改为r–r--r–
- ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL生效顺序:所有者,自定义用户,自定义组,其他人 getfacl
可查看文件里对应用户的权限setfacl -b
清楚文件上acl权限setfacl -R -m u:name:rwx /data
给name对data文件夹设置读写执行权限setfacl -Rb /data
清楚data文件夹acl权限,不影响原权限
[root@CentOS7 data]# su lqx
[lqx@CentOS7 data]$ cat f1
[lqx@CentOS7 data]$ exit
exit
[root@CentOS7 data]# setfacl -m u:lqx:0 f1
[root@CentOS7 data]# su lqx
[lqx@CentOS7 data]$ cat f1
cat: f1: Permission denied
[lqx@CentOS7 data]$ exit
exit
[root@CentOS7 data]# ll
total 1
-r--r--r--+ 2 root root 0 Mar 23 11:48 f1
解析: 利用setfacl -m
,将用户lqx对于f1的读权限取消,即为u:lqx:0(如果需要增加读r;写w;执行x,将0替换为对应的字母即可)