目录:
一:linux操作系统的用户分类:
普通用户
root超级管理员
用户的分类和组
/etc/passwd:保存了操作系统中所有用户的信息
root:x:0:0:root:/root:/bin/bash
字段1:用户名
字段2:密码占位符
字段3:用户的uid,0表示超级用户,500-60000:普通用户,1-499:程序用户(无法登录系统)
字段4:基本组的gid,先有组才有用户
字段5:用户信息记录字段
字段6:用户的家目录
字段7:用户登录系统后使用的命令解释器
/etc/shadow:保存了用户的密码信息
root:$6$1P0kVN6KjNOO05Tt$EVRdWiJ9eDbP2JLV4tSmNUQFmovIuhswl/tAr9xHo0nVZuTJxGWpyi.YJNHPynB9kNGGHPgoHd0aELBlRx1qT/::0:99999:7:::
字段1:用户名
字段2:sha加密方式,加入了salt值
字段3:距离1970/1/1密码最近的一次的修改时间
字段4:密码的最短有效期
字段5:密码的最长有效期
字段6:密码过期前7天警告
字段7:密码的不活跃期(密码过期了,在这个期间的天数内,仍可以登录系统)
字段8:用户的失效时间
/etc/group:记录了系统中所有组的信息
二:建立及调整用户属性
1)建立一个名为class1的组,组ID为1000,class2的组ID为2000
groupadd class1 # 默认501
groupmod -g 1000 class1
cat /etc/group
groupadd -g 2000 class2
cat /etc/group
2)建立一个tom用户,要求其基本组是class1组,附加组为class2组,tom用户的uid为600
useradd -g class1 tom # 可以写class1也可以写1000
usermod -G 2000 -u 600 tom # G:附加组
id tom # 查看
创建时一步到位:
useradd -u 600 -g 1000 -G 2000 tom
id tom
3)建立一个程序用户uid为250,用户名为testuser,没有家目录
useradd -u 250 -M -s /sbin/nologin testuser # -M没有home目录,cd /home/ 下面没有该用户,-s /sbin/nologin:因为是程序用户,所以不能登录系统
4)为tom用户设定密码为123,并设定密码最长有效期为90天,将用户密码进行锁定使其无法登录系统
管理员模式下:
passwd tom
123.com # 输入密码
123.com # 确认密码
chage -M 90 tom # 设定有效期
id tom # 进行查看,但是无法查看多少天,
passwd -S tom # 查看状态,可以看多少天;也可通过cat /etc/shadow查看
passwd -l tom # 锁定账户
passwd -u tom # 解锁用户
5)删除tom用户和testuser用户,删除class1组和class2组
userdel -r tom # -r 连同用户文件一起删除,比如家目录
userdel -r testuser
groupdel class1
groupdel class2
三:调整文件及目录权限
通俗说:就是文件或者目录属于谁,属于哪个组,不同的用户能对该文件进行何种操作
查看文件权限:ls -l test.txt
查看文件夹权限:ls -ld testdir,不加d是查看这个文件夹中每一个具体的文件的权限
比如:
-rw-r--r--. 1(硬链接数) root(所属者) root(所属组) test.txt
drwxr-xr-x. 2 root root testdir
- rw- r-- r-- .
d rwx r-x r-x .
字段1:文件类型:-普通文件,d目录,l符号链接,b块设备
字段2:文件所属者对该文件的权限
r w x -
文件:read读取文件 write写入文件 可执行文件 什么权限都没
目录:可以查看目录内容 可以增删文件 可以进入目录(一般目录都有这个权限) 什么权限都没
字段3:文件所属组对该文件的权限
字段4:其他用户对该文件的权限
字段5:.表示受linux系统中的标签工具管理,若有外来程序访问一般会阻止(字段5不重要)
chmod 对象 算数运算符 权限 文件
对象:u(所属者) g(所属组) o(其他用户) a(all)
算数运算符:- + = chmod 0-r /tmp/test.txt 其他用户去掉读的权限
权限:r w x
通过八进制改权限
r w x -分别为4 ,2 ,1 ,0
chmod 777 /tmp/test.txt
改变文件的所属者和所属组
chown 用户 文件
chgrp 组 文件
举例注意点:
mkdir /tmp/test
chmod 777 /tmp/test
然后切换到普通用户1
touch /tmp/test/test.txt
[user1@localhost test]$ ls -l test.txt
-rw-rw-r--. 1 user1 user1 0 Jan 13 18:01 test.txt
会发现其他用户和组并没有删除这个文件的权限
接下来切换到普通用户2
进入到/tmp/test下
rm -rf test.txt
发现可以删除,上面又说到了其他用户没有删除这个文件的权限,那怎么回事?
这是取决于这个test.txt这个文件的所在的文件夹的权限
粘滞位:
粘滞位针对目录赋权,目录中创建的文件只有建立者可以删除
chmod o+t test
[root@localhost tmp]# ls -ld test
drwxrwxrwt. 2 root root 6 Jan 13 18:05 test
其他的用户和组选项里面多了个“t”
然后再分别进入其他用户,进行删除test.txt,发现会报错,无法删除
sgid:
针对目录建立的权限,在该目录中建立的文件所属组继承改目录的属组
chmod g+s test
suid:此种权限通常称为 SetUID,简称 SUID 特殊权限。
对可执行文件建立。谁允许该文件,那么另外的执行者就具有该文件所属者的权限
chmod u+s test
SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,
会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。
不再允许添加新用户的请求:
添加用户以下文件会有变化:
/etc/group
/etc/passwd
/etc/shadow
/home/xxx
那么我们只有保证这些文件不变动,那么就无法创建新用户了。
对文件进行锁定:
chattr +i 要锁定的文件名
chattr +i /etc/passwd /etc/shadow
取消锁定:
chattr -i
使用 chattr 命令配置文件或目录的隐藏属性后,可以使用 lsattr 命令查看。lsattr 命令,用于显示文件或目录的隐藏属性
lsattr /etc/passwd /etc/shadow
umask:
让新建文件和目录拥有默认权限
Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。
怎么修改新建用户的默认天数:
方法一:
chage -M 90 tom # 设定有效期
方法二:直接修改默认值,不用每次创建用户都要去chage -M 90 user
vim /etc/login.defs 里面的PASS_MAX_ADYS值