一、Linux 用户分类
超级管理员、普通用户、傀儡用户
1,root #皇帝用户,定制规则的用户,系统高级管理员;【0】
2,普通用户 #老百姓,官员;有特定的权限,权限是root授予的;【大于1000】
3,傀儡(虚拟)用户 #没有家目录,不能登录系统;sshd; 【0-999】
二、Linux 用户相关的配置文件
(一)每种类型用户信息的存储文件passwd
[root@oldboy home]# 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
解释说明:root:x:0:0:root:/root:/bin/bash
root #用户名
x #以前6的时候,这个位置是密码,后来密码换到别的文件中存储了,这里就换成了x,占位符号;
0 #uid,用户id
0 #gid,用户组id
root #用户的描述信息,注释、备注
/root #用户的家目录;
/bin/bash #用户使用的解释器;
#/bin/bash:用户能够登录操作系统
#/sbin/nologin:用户不能登录操作系统
(二)Linux release 6 以后密码存储文件
[root@root home]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@root home]#
密码存储文件:shadow
[root@root home]# cat /etc/shadow
root:$6$RLUDoFchgqxGoD8v$TtDAUzx3P8.e7t/puZJt47bOq6te6bIRvq8szaACh58E4uBlgcdwklNe/C2vYwLILY0J4V4WvTXsXLA9inpGZ/::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:
密码文件内容解释说明:bin:*:18353:0:99999:7:::
bin: #用户名;
*: #机密后的密码;
========================================
18353: #最近修改密码的时间戳;
0: #禁止修改密码的天数;
99999: #用户必须修改密码的天数;
7: #修改密码提前警告的天数;
: #密码过期后,彻底禁用用户的天数;
: #失效时间;
(三)Linux 用户组的存储文件
[root@root home]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
(四)Linux 用户组的密码存储文件
[root@root home]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
(五)Linux 用户备用目录(重点)
每一次创建新用户,系统会直接把/etc/skel/目录下的所有文件拷贝到新用户的家目录下。
1.创建新用户
2.系统默默干活: cp /etc/skel/.bash* /home/【新用户】/
测试一下
[root@root home]# cd /etc/skel/
[root@root skel]# ls
[root@root skel]# ll
总用量 0
[root@root skel]# touch 1.txt
[root@root skel]# ls
1.txt
[root@root skel]# useradd test
[root@root ~]# cd /home
[root@root home]# ls
0815newUser oldboy oldboy-02 test
[root@root home]# cd test/
[root@root test]# ls
1.txt
三、用户管理
(一)新增用户
1.新增用户方法一:
语法:useradd 【用户名称】
[root@root test]# useradd 0815newUser02
[root@root test]# ls /home
0815newUser 0815newUser02 oldboy oldboy-02 test
[root@root test]#
2.新增用户方法二:指定UID
语法:useradd 【用户名称】 -u 1004
[root@root test]# useradd 0815newUser03 -u 1006
[root@root test]# ls /home
0815newUser 0815newUser02 0815newUser03 oldboy oldboy-02 test
[root@root test]# id 0815newUser03
uid=1006(0815newUser03) gid=1007(0815newUser03) 组=1007(0815newUser03)
[root@root test]#
3.新增用户方法三:指定UID、GID
语法:useradd 【用户名称】 -u 1007 -g 0
[root@root test]# useradd 0815newUser04 -u 1007 -g 0
[root@root test]# id 0815newUser04
uid=1007(0815newUser04) gid=0(root) 组=0(root)
[root@root test]#
4.新增用户方法四:指定UID、GID、添加注释
语法:useradd 【用户名称】 -u 1008 -g 0 -c "添加注释"
[root@root test]# useradd 0815newUser05 -u 1008 -g 0 -c "添加注释"
。。。。
0815newUser05:x:1008:0:添加注释:/home/0815newUser05:/bin/bash
[root@root test]#
5.创建虚拟傀儡用户:
语法:useradd 【用户名称】 -c "虚拟用户" -M -s "/sbin/nologin"
[root@root tmp]# useradd mysqlxuni -c "mysql虚拟用户" -M -s /sbin/nologin
[root@root tmp]# cat /etc/passwd | grep mysql
mysqlxuni:x:1009:1009:mysql虚拟用户:/home/mysqlxuni:/sbin/nologin
[root@root tmp]#
[root@10 ~]# cat /etc/passwd | grep nginx
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@10 ~]# cat /etc/passwd | grep mysql
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
[root@10 ~]#
(二)修改用户
1.修改用户的UID:
语法:usermod 【用户名称】 -u 【UID数值】
[root@root tmp]# usermod 0815newUser02 -u 2001
[root@root tmp]# id 0815newUser02
uid=2001(0815newUser02) gid=1006(0815newUser02) 组=1006(0815newUser02)
[root@root tmp]#
2.修改用户的GID:
语法:usermod 【用户名称】 -g 【GID数值】
[root@root tmp]# usermod 0815newUser02 -g 1
[root@root tmp]# id 0815newUser02
uid=2001(0815newUser02) gid=1(bin) 组=1(bin)
[root@root tmp]#
3.修改用户的备注信息:
语法:usermod 【用户名称】 -c 【备注信息】
[root@root tmp]# cat /etc/passwd | grep 0815
0815newUser:x:1003:1003::/home/0815newUser:/bin/bash
0815newUser02:x:2001:1:修改备注信息:/home/0815newUser02:/bin/bash
4.修改用户密码方式一:交互式
交互式简单的设置和修改密码
语法:passwd 【普通用户名称】
[root@root tmp]# passwd 0815newUser02
更改用户 0815newUser02 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@root tmp]# cat /etc/shadow | grep 0815
0815newUser:!!:19950:0:99999:7:::
0815newUser02:$6$5p6I1dfV$BNJ4/Yx2tWOWKuvLTJmA9SX03x3QgKx2Ekzsfl0Rnfyu4Q.DvIVIms4iA9QLY98p64y/g0pYzewBytiHXMHcO1:19950:0:99999:7:::
0815newUser03:!!:19950:0:99999:7:::
0815newUser04:!!:19950:0:99999:7:::
0815newUser05:!!:19950:0:99999:7:::
[root@root tmp]#
5.修改用户密码方式二:非交互式
语法:echo "1" | passwd --stdin 【用户名称】
[root@root tmp]# echo "1" | passwd --stdin 0815newUser03
更改用户 0815newUser03 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@root tmp]# cat /etc/shadow | grep 0815
0815newUser:!!:19950:0:99999:7:::
0815newUser02:$6$5p6I1dfV$BNJ4/Yx2tWOWKuvLTJmA9SX03x3QgKx2Ekzsfl0Rnfyu4Q.DvIVIms4iA9QLY98p64y/g0pYzewBytiHXMHcO1:19950:0:99999:7:::
0815newUser03:$6$e/w6PYkI$xAeEj.57Fk5mLF1dQlNpLqbNqpbbWMHYti32wU8g1bTG7CcU6gu0uZFnNv7jXiYOw4fUC5Wv7H6M2AR3C2Bxk0:19950:0:99999:7:::
0815newUser04:!!:19950:0:99999:7:::
0815newUser05:!!:19950:0:99999:7:::
[root@root tmp]#
(三)删除用户
1.删除用户,保留用户的数据信息:
删除一个用户之后,保留用户之前的数据信息;
语法:userdel 【用户名名称】
#1,删除一个用户(删除完之后,保留期用户的数据信息)
[root@root tmp]# userdel 0815newUser05
[root@root tmp]# cat /etc/shadow | grep 0815new
0815newUser:!!:19950:0:99999:7:::
0815newUser02:$6$5p6I1dfV$BNJ4/Yx2tWOWKuvLTJmA9SX03x3QgKx2Ekzsfl0Rnfyu4Q.DvIVIms4iA9QLY98p64y/g0pYzewBytiHXMHcO1:19950:0:99999:7:::
0815newUser03:$6$e/w6PYkI$xAeEj.57Fk5mLF1dQlNpLqbNqpbbWMHYti32wU8g1bTG7CcU6gu0uZFnNv7jXiYOw4fUC5Wv7H6M2AR3C2Bxk0:19950:0:99999:7:::
0815newUser04:!!:19950:0:99999:7:::
[root@root tmp]#
[root@root tmp]# ll /home
总用量 0
drwx------ 2 0815newUser 0815newUser 62 8月 15 09:15 0815newUser
drwx------ 2 0815newUser02 bin 75 8月 15 10:47 0815newUser02
drwx------ 2 0815newUser03 0815newUser03 75 8月 15 10:48 0815newUser03
drwx------ 2 0815newUser04 root 75 8月 15 10:49 0815newUser04
drwx------ 2 1008 root 75 8月 15 10:52 0815newUser05
2.彻底删除用户:
递归删除一个用户,不保留其原来信息【彻底删除】
语法:userdel -r 【用户名称】
[root@root tmp]# userdel -r 0815newUser04
[root@root tmp]# ll /home
总用量 0
drwx------ 2 0815newUser 0815newUser 62 8月 15 09:15 0815newUser
drwx------ 2 0815newUser02 bin 75 8月 15 10:47 0815newUser02
drwx------ 2 0815newUser03 0815newUser03 75 8月 15 10:48 0815newUser03
drwx------ 2 1008 root 75 8月 15 10:52 0815newUser05
drwx------ 2 oldboy oldboy 96 7月 29 17:51 oldboy
drwx------ 2 oldboy-02 oldboy-02 62 7月 29 17:36 oldboy-02
drwx------ 2 test test 75 8月 15 10:23 test
[root@root tmp]#
(四)查询用户
查询用户一:id 【用户名】
#1,查看用户信息【id】
[root@root tmp]# id 0815newUser03
uid=1006(0815newUser03) gid=1007(0815newUser03) 组=1007(0815newUser03)
[root@root tmp]#
查询用户方法二:whoami
#查询当前窗口用户
[root@root tmp]# whoami
root
[root@root tmp]#
查询用户方法三:who
#4,查看当前链接用户(显示的信息比w少一点)
[root@root tmp]#
[root@root tmp]# who
root pts/0 2024-08-15 09:14 (10.0.0.1)
[root@root tmp]#
查询用户方法四:以用户为单位,每个用上一次使用系统的记录(每个用户只显示一条)
[root@root tmp]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 四 8月 15 10:10:30 +0800 2024
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
oldboy pts/0 一 7月 29 17:40:00 +0800 2024
oldboy-02 **从未登录过**
dhcpd **从未登录过**
0815newUser pts/0 四 8月 15 10:10:21 +0800 2024
xuniyonghu01 **从未登录过**
查询方法五: #以操作单位
[root@root tmp]# last
root pts/0 10.0.0.1 Thu Aug 15 09:14 still logged in
root pts/0 10.0.0.1 Thu Aug 15 08:21 - 09:14 (00:53)
reboot system boot 3.10.0-1160.el7. Tue Aug 13 08:32 - 13:27 (2+04:54)
root pts/1 10.0.0.1 Fri Aug 9 18:01 - crash (3+14:31)
root pts/0 10.0.0.1 Fri Aug 9 07:26 - 18:01 (10:35)
root tty1 Thu Aug 8 22:42 - crash (4+09:50)
root pts/0 10.0.0.1 Thu Aug 8 22:34 - 22:39 (00:04)
reboot system boot 3.10.0-1160.el7. Thu Aug 8 22:32 - 13:27 (6+14:54)
root pts/0 10.0.0.1 Thu Aug 8 11:05 - crash (11:27)
reboot system boot 3.10.0-1160.el7. Thu Aug 8 11:04 - 13:27 (7+02:22)
查询方法六:查看当前系统登录的所有用户【w】
[root@root ~]# su - 0815newUser02
[0815newUser02@root ~]$ w
13:30:21 up 1 day, 18:13, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 09:14 2:21 0.24s 0.16s bash
root pts/1 10.0.0.1 13:29 29.00s 0.00s 0.00s -bash
root pts/2 10.0.0.1 13:30 5.00s 0.00s 0.00s w
[0815newUser02@root ~]$
USER #用户名
TTY #登录方式(tty表示本地,pts表示远程)
FROM #登录ip地址
LOGIN@ #登录时间
IDLE #空闲时间
JCPU #登录后做的操作占用cpu的资源情况(之后进程详细说)
PCPU #登录后做的操作占用cpu的资源情况(之后进程详细说)
WHAT #在干什么
四、Linux权限分配
(一)Linux提取文件
用户权限文件:sudoers
(二)Linux修改用户权限
进入修改界面方式一:
[root@10 ~]# visudo
[root@10 ~]#
进入修改界面方式二:
[root@10 ~]# vim /etc/sudoers
[root@10 ~]#
进入修改界面方式三:
[root@10 ~]# vim +100 /etc/sudoers
[root@10 ~]#
(三)Linux查看用户权限
用户查看权限方式一:sudo -l
管理员用户
[root@root tmp]# sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE
LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 root 可以在 root 上运行以下命令:
(ALL) ALL
[root@root tmp]#
普通用户
[0815newUser03@root ~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] 0815newUser03 的密码:
对不起,用户 0815newUser03 不能在 root 上运行 sudo。
[0815newUser03@root ~]$
五、系统文件默认权限
[ ~]$ vim /etc/profile
.........
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
.........
######################################
gt #大于
ge #大于等于
lt #小于
le #小于等于
eq #等于
ne #不等于
############################
#创建目录默认权限:755+022=777 #目录最大权限默认777
#创建文件默认权限:644+022=666 #文件默认最大权限666
#-创建目录的默认权限设置
umask 022 #创建目录的结果就是:777 - 022(umask)=755
#-创建文件的默认权限设置
umask 022 #创建文件的结果就是:666 - 022(umask)=644
#####################################################
如果说,umask设置为奇数,
创建目录不影响,创建文件需要再奇数位再+1;
六、系统特殊权限
suid
suid:让所有用户,在使用这个命令文件的时候,都拥有属主一样的权利。
***:只针对二进制命令设置
[root@root tmp]# chmod u+s /usr/bin/cp
[root@root tmp]# ll /usr/bin | grep cp
-rwxr-xr-x. 1 root root 1345 10月 2 2020 abrt-action-analyze-ccpp-local
-rwxr-xr-x. 1 root root 3535 10月 2 2020 abrt-action-perform-ccpp-analysis
-rwsr-sr-x. 1 root root 155176 8月 20 2019 cp
-rwxr-xr-x. 1 root root 145968 10月 13 2020 cpio
-rwxr-xr-x. 1 root root 772688 9月 30 2020 cpp
-rwxr-xr-x. 1 root root 67928 10月 20 2020 cpupower
-rwxr-xr-x. 1 root root 62208 10月 1 2020 lscpu
-rwxr-xr-x. 1 root root 11424 10月 1 2020 rpm2cpio
-rwxr-xr-x. 1 root root 91384 8月 9 2019 scp
[root@root tmp]#
sgid
sgid:让所有用户,在使用这个命令文件的时候,都拥有属组一样的权利。
***:只针对二进制命令设置
[root@root tmp]# chmod g+s /usr/bin/cp
[root@root tmp]# ll /usr/bin | grep cp
-rwxr-xr-x. 1 root root 1345 10月 2 2020 abrt-action-analyze-ccpp-local
-rwxr-xr-x. 1 root root 3535 10月 2 2020 abrt-action-perform-ccpp-analysis
-rwsr-sr-x. 1 root root 155176 8月 20 2019 cp
-rwxr-xr-x. 1 root root 145968 10月 13 2020 cpio
-rwxr-xr-x. 1 root root 772688 9月 30 2020 cpp
-rwxr-xr-x. 1 root root 67928 10月 20 2020 cpupower
-rwxr-xr-x. 1 root root 62208 10月 1 2020 lscpu
-rwxr-xr-x. 1 root root 11424 10月 1 2020 rpm2cpio
-rwxr-xr-x. 1 root root 91384 8月 9 2019 scp
[root@root tmp]#
sbit
sbit:粘滞位,只有属主能编译和删除这个文件和目录,其他用户只能查看
***:一般情况下,这个权限,都是给目录设置的;含义:让一个目录下,只有属主能操作文件,其他用户只能看,不能删除
drwxr-xr-x 2 root root 6 8月 15 14:06 work-space-tst
-rw------- 1 root root 2562 8月 8 10:18 yum_save_tx.2024-08-08.10-18.f4AFHg.yumtx
[root@root tmp]#
[root@root tmp]# chmod o+t work-space-tst/
[root@root tmp]#
drwxr-xr-t 2 root root 6 8月 15 14:06 work-space-tst
-rw------- 1 root root 2562 8月 8 10:18 yum_save_tx.2024-08-08.10-18.f4AFHg.yumtx
[root@root tmp]#
七、权限拓展~文件上锁
(一)文件上锁语法
语法:chattr +i 【文件名】
[root@root tmp]# touch 1.sql
[root@root tmp]# ll
总用量 12
-rw-r--r-- 1 root root 0 8月 15 14:11 1.sql
[root@root tmp]# chattr +i 1.sql
[root@root tmp]# ll
总用量 12
-rw-r--r-- 1 root root 0 8月 15 14:11 1.sql
(二)查看文件是否上锁
语法:lsattr 【文件名】
[root@root tmp]# lsattr 1.sql
----i----------- 1.sql
[root@root tmp]#
(三)解锁文件
语法: chattr -i 【文件名】
[root@root tmp]# chattr -i 1.sql
[root@root tmp]# lsattr 1.sql
---------------- 1.sql
[root@root tmp]#