文章目录
前言
linux安全系统的核心是用户账户,用户对系统中各种对象的访问权限取决于登陆系统时的账户,用户权限通过UID来跟踪。
一、管理用户账户需要的文件和工具
1.1 /etc/passwd文件
/etc是Linux系统中的一个目录,用于存放系统配置文件。在Linux系统中,几乎所有的配置文件都存放在/etc目录下,这些配置文件都是系统级别的,用于系统的初始化、启动和运行。
/etc/passwd包含了与用户有关的信息,包括用户名、用户ID、用户组ID、用户家目录、默认shell等。该文件的格式为每行一个用户,使用冒号:分隔不同字段。
cat /etc/passwd
#output
root:x:0:0:root:/root:/bin/bash
...
username:password:UID:GID:comment(用户账户的文本描述,即备注):home_directory(用户HOME目录位置):login_shell
系统账户是指在Linux系统中用于运行系统服务或进程的特殊账户,系统账户的UID(500以下的UID都是系统账户)通常是预留的;
在上面显示中用户密码都是 x ,其实用户密码都在/etc/shadow文件中
1.2 /etc/shadow
/etc/shadow文件是Linux系统中存储用户密码信息的文件,该文件的权限为-r--------,只有root用户和具有读权限的用户才能读取该文件。/etc/shadow文件的格式为每行一个用户,使用冒号:分隔不同字段。
username(用户的登录名):encrypted_password(表示用户的密码信息,已经被加密,是一个字符串,通常为13个字符):last_password_change(用户上次修改密码的时间,表示从1970年1月1日开始的天数):minimum_days_between_password_changes:maximum_days_between_password_changes(表示用户修改密码的最短时间间隔,单位为天):password_expiry_warning(用户密码过期前的警告时间,单位为天):account_inactive(用户账户失效前的不活动时间,单位为天):account_expiry_date(用户账户的过期时间,表示从1970年1月1日开始的天数):reserved_field(保留字段,目前没有任何作用)
1.3 添加、删除、修改用户 -useradd
在root用户下或使用sudo命令添加、删除新用户
sudo useradd newuser # 添加用户 -m:同时创建新用户的home目录
ls -al /home/newuser # 查看新用户的home目录
sudo passwd newuser # 设置密码
sudo userdel -r newuser # 删除用户在/etc/passwd的用户信息 -r:同时删除用户的home目录等
修改用户
usermod 用来修改/etc/passwd中的大部分字段
-c:修改用户的备注信息;
-d:修改用户的家目录;
-e:设置用户账户的过期日期;
-g:修改用户所属的主组;
-G:修改用户所属的附加组;
-l:修改用户的登录名;
-p:设置用户的加密密码;
-s:修改用户的默认shell。
sudo usermod -s /bin/bash testuser # 将用户testuser的默认shell修改为/bin/bash
passwd 用于修改自己的密码或者其他用户的密码。修改密码时,需要先输入旧密码,然后输入新密码两次进行验证。passwd命令可以修改用户密码的加密方式,也可以设置密码过期时间、锁定用户账户等。
chpasswd 可以批量修改多个用户的密码。chpasswd命令的输入可以来自文件或者标准输入流,每行包含一个用户名和密码之间用冒号或空格分隔。
sudo chpasswd < userpass.txt
chsh 修改用户的默认登录shell,必需用shell的全路径名作为参数
sudo chsh -s /bin/bash testuser # 将用户testuser的默认登录shell修改为/bin/bash
chfn 用于修改/etc/passwd文件中comment(用户账户的文本描述,即备注),通常是用户的个人信息,包括真实姓名、办公室电话、家庭地址等
chage命令用于修改用户的账户过期时间
二、组
用户账户在控制单个用户时较好,但在涉及共享资源的一组用户时就差点意思
2.1 /etc/group
/etc/group 是 Linux 系统中的一个文件,用于存储系统中的所有用户组信息。每个用户组都对应一行记录,记录中包含以下字段:
组名称:即用户组的名称,由小写字母、数字和特殊字符组成,长度不超过 32 个字符。
组密码:即用户组的密码,由加密后的密码字符串组成,长度不超过 16 个字符。如果用户组没有设置密码,则该字段为空。
GID:即用户组的 ID(Group ID),由一个非负整数表示,通常与组名称对应。系统中的每个用户组都有唯一的 GID。
组成员:即用户组的成员列表,由以逗号分隔的用户名组成。每个用户组至少包含一个成员,可以有多个成员。
如:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,username
不要修改/etc/group文件,可通过usermod添加用户到一个组
2.1 创建组、修改组
groupadd
sudo groupadd share
sudo usermod -G share test # 为share组添加成员test -g 指定的组名会替换掉账户的默认组,-G 将该组添加到用户的属组列表中
tail /etc/group # 查看组
groupmod
sudo groupmod -n shared share -n 修改组名,-g 修改GID
三、文件权限
ls -l
-rw-r--r-- 1 user user 0 Aug 28 15:30 file.txt
第一个字符:表示文件的类型,包括以下几种类型:
-:普通文件
d:目录
l:符号链接文件
c:字符设备文件
b:块设备文件
s:套接字文件
p:命名管道文件
读(r)、写(w)和执行(x)
对象属主、对象属组、其他用户
八进制模式的安全设置:获取rwx权限的值,转换为二进制值,再用八进制值来表示,如r–就是100也就是4。对文件来说,全权限的值就是666(读和写);目录则是777(读、写和执行)。
umask 设置文件和目录的默认权限;Linux 系统中新建的文件权限是 666,新建的目录权限是 777。如果当前的 umask 值为 022,则新建文件的实际权限为 644,新建目录的实际权限为 755,相减,
umask 022
四、改变安全性设置
改变目录或文件的权限、默认文件属主、默认属组
4.1 改变权限
chmod 命令用于修改文件或目录的权限
chmod 权限 文件或目录...
数字表示法:一般用三个八进制数来表示,每个数分别表示用户、用户组和其他用户的权限。
chmod 760 test
符号表示法:用符号来表示权限,包括以下几种符号:
u:表示用户。
g:表示用户组。
o:表示其他用户。
a:表示所有用户。
+:添加权限。
-:去除权限。
=:设置权限。
chmod go-w file.txt 用户组和其他用户去除写的权限
4.2 改变所属关系
chown 修改文件或目录的所有者或所属用户组
chown [所有者][:所属用户组] 文件或目录... # 所有者 表示要设置的所有者,可以是用户名或用户 ID;所属用户组 表示要设置的所属用户组,可以是用户组名或用户组 ID; 如果只想修改所有者或所属用户组中的一个,可以将另一个省略
chown user1:group1 file.txt # 改变属主和属组
chown user1 file.txt # 改变属主
chown .group1 file.txt # 改变属组
chown user1. file.txt # 将属主和属组都设为user1
chgrp 修改文件或目录的所属用户组
chgrp 用户组 文件或目录...
chgrp group1 file.txt
五、共享文件
创建组可以再linux系统上共享文件,在目录的属组间可以通过设置SGID进行文件共享
设置组 ID(SGID): 当一个用户在一个 SGID 目录中创建新文件或目录时,新文件或目录的所属用户组将被设置为 SGID 目录的默认所属用户组
# 创建一个共享目录,使目录里的新文件都能沿用目录的属组
mkdir testdir # 创建目录
ls-l # 查看目录权限
chgrp shared testdir # 更改目录属组
chmod g+s testdir # 改变目录权限,设置SGID,g+s;
ls-l # 查看目录属组及权限信息
umask 002 # 设置所有组成员可写文件,即文件对属组是可写的
cd testdir # 在testdir下创建文件看一下权限
touch testfile
ls -l # 新文件会沿用目录的属组而不是用户的默认属组,现在shared组的所有用户都能访问这个文件
总结
linux用户的添加、修改;文件权限;文件在属组间共享、文件在目录的属组间共享