7.1.1 /etc/passwd文件
每条记录个字段:
- 用户名
- 密码
- UID
- 组UID
- 账户文本描述 (备注)
- 用户HOME目录
- 默认shell
7.1.2 /etc/shadow 文件
每条记录都有9个字段:
- 与/etc/passwd 对应的密码
- 加密后的密码
- 上次修改密码后的时间
- 多少天后才能更改密码
- 多少天后必须更改密码
- 过期多少天前向用户提醒更改密码
- 密码过期多少天后禁用账户
- 被禁用的日期(从1970/1/1到当天)
- 预留
7.1.3 添加新用户
用户创建时默认的信息被设置在 /etc/default/useradd中,添加-D参数以查看
- 新用户被默认添加到100组
- 新用户HOME目录位于/home/logname
- 密码过期后不被禁用
- 未设置过期日期
- 默认shell为/bin/sh
- 系统复制/etc/skel目录下文件到HOME目录下
- 系统为该用户在mail目录下创建一个接收邮件的文件
注6:/etc/skel文件配置了bash shell环境的启动文件
useradd -m username # 创建用户 -m 参数 在HOME文件夹下添加username文件夹,拷贝/etc/skel文件中的数据到此
useradd -D -s /bin/bash #更改新建用户的默认值
更改默认值的参数
-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_date 更改默认的新账户的过期日期
-f inactive 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell
7.1.4删除用户
userdel user_name
userdel -r user_name # -r参数表示同时删除用户和目录
7.1.5修改用户
usermod -l new_name temp_name #更改用户名 (无法更改当登录的用户名 )
passwd #用户密码更改
chpasswd #批量更改用户密码
chsh -s new_shell user_name # 更改登录shell
chfn #更改用户备注
chage # 更改密码过期日期
7.2 使用linux用户组
组信息被存储在/etc/group文件中
每条记录四个字段:
- 组名
- 组密码 允许非组成员通过密码临时成为组成员
- GID
- 属于该组的用户列表
Tips:当某个用户在/etc/passwd中被指定某个组为默认组时,账户不会作为组成员在/etc/group中出现
7.2.2 创建新组
groupadd group_name
usermod -G group_name new_user # 添加用户入组
7.2.3修改组
groupmod -n new_name temp_name
7.3理解文件限权
7.3.1使用文件限权符
ls命令列出的对象类型
“-” 文件
d 目录
l 链接
c 字符型设备
b 块设备
n 网络设备
7.3.2默认文件限权
Tips:文件的全权限为666,目录的全权限为777。
#umask 表示想要屏蔽掉的限权
#eg:
umask #0022
touch file
ls file #666-022 =>644 对于其他用户,只有rwx中的r只读限权
7.4改变安全性设置
7.4.1改变限权
#两种方式
chmod 777 newfile
chmod o+x newfile # u g o a 用户 组 其他 所有
chmod o-x newfile
7.4.2更改所属关系
chown new_owner(name or pid) fine_name # 更改所有者
chown new_owner.new_group file_name #同时更改所有者 和 所属组
chgrp new_group file_name
Tips:只有root用户可改变文件的属主,属主可改变文件的属组,前提是属主同时属于原属组和目标属组。
7.5共享文件
ques:用户u在公共目录d创建了文件f,文件f的组正常情况下属于用户u的默认组,其他非该组用户无法访问。要解决这个问题,可以将目录设置为,该公共目录下所新建的文件,所属组就是该目录的属组。
Linux为每个文件和目录存储了3个额外的信息位,它会加入到标准3位8进制前,组成4位8进制,或者以符号形式的s表示。
- 设置用户ID(SUID):文件被用户使用时,程序会以文件属主的限权运行 ???
- 设置组(ID):文件会以文件属组的限权运行??? 目录新建的文件会以目录默认属组作为默认属组
- 粘着位: 进程结束后文件还会驻留(粘着)在内存中。
mkdir text
chgrp aim_grp text
chmod g+s text
umask 0002 #不屏蔽组限权 不然即使改了组,也跟other一样的限权
cd ./text
touch file #file 所属组同text为 aim_grp
ls -l file