linux用户账户与组账户,文件权限及归属管理

Linux是一个多用户, 多任务多进程的服务器操作系统

用户角色:超级用户(管理员),普通用户,程序用户

用户账号管理
用户账号概述
用户:使用者在计算机内部的身份标识

用户账号的常见分类:
超级用户: root uid=0 gid=0权限最大(使用需要严谨)。宿主目录 /root
普通用户: 1000<=uid<=60000 受到权限限制,一般在宿主目录下有完整权限,宿主目录/home/用户名
程序用户: 1=<uid<=999 应用程序运行时需要通过用户身份获取相应的系统资源,通常不能用于登录系统或管理系统。

用户账号文件:
/etc/passwd,作用:保存用户名称,宿主目录,登录shell等基本信息,每一行对应一个用户的账号记录
etc/shadow:存放用户密码信息,账号有效期等,(影子文件
/etc/group:存放组帐户信息
/home/用户名:用户的宿主目录
/etc/skel:用户配置文件的模版目录
/etc/passwd文件中7个字段的详细解释
root: x:0:0:root:/root:/bin/bash
用户名:x :用户id:组id:用户备注信息(用户全名):宿主目录:登录时分配到的shell解释器,(若shell类型为/sbin/nologin,则不能登录)
密码占位符x(保存到了影子文件)
/etc/shadow文件中的9个字段的详细解释
第一字段:用户账号名
第二字段:加密的密码,!!表示密码被锁定
第三字段:上次修改密码的时间, 距1970-01-01过去多少天
第四字段:密码最短有效期(距上次密码修改起多少天内不能再次修改密码)单位天"。"0"表示随时可修改密码。
第五字段:密码最长有效期(在修改密码后的多少天必须重新修改密码。99999表示永久可以使用。)
第六字段:提前多少天警告用户口令将过期(7表示在密码过期前7天开始警告)
第七字段:在密码过期之后多少天禁用此用户
第八字段:密码过期日期,若设置则显示为过期日期距1970年1月1日多少天。
第九字段:保留字段(未使用)

创建用户:useradd
格式:useradd [选项]…用户名
-u: 指定UID标记号
-d: 指定宿主目录,默认为/home/用户名
-e:指定账号失效时间 useradd -d /IT -e “2020-02-28” jishu
-M: 不为用户建立初始化宿主目录
-s: 指定用户登录shell /sbin/nologin不可登录的shell
-g:指定用户的基本组名(gid号)私有组
-G: 指定用户的附加组名(gid号)
-c:添加备注,显示在/etc/passwd第五字段
/bin/false是最严格的禁止login选项,一切服务都不能用。
/sbin/nologin只是不允许login系统

用户账号的初始配置文件
文件来源:新建用户账号时,用户宿主目录内容从etc/skel/目录中复制而来
主要的用户初始配置文件–>脚本(只对当前用户生效) :
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登陆时执行
~/.bash_history:用户登录时从该文件加载历史命令记录

清除历史命令
history -c
删除~/.bash_history文件内容
历史命令引用
!序号
!命令开头

全局初始配置文件,对所有用户生效
/etc/bashrc //切换shell时执行
/etc/profile //登陆时执行
注意: /etc/profile和~/.bash_ profile冲突了 ,~/.bash_ _profile的配置 覆盖全局文件配置。

设置/更改用户口令passwd命令
格式:passwd [选项]…[用户名]
不指定用户名,默认修改的是当前登录用户的密码,普通用户可以修改自己的密码,root可以修改任意用户的密码。
常用选项:
-d:清空用户密码(和不设置密码不一样)
-l:锁定用户账号
-S:查看用户账号的状态(是否被锁定)
-u:解锁用户账号
-x:–maximum=DAYS:密码的最长有效时限
-n:–minimum=DAYS:密码的最短有效时限
-w:–warning=DAYS:在密码过期前多少天开始提醒用户
-i:–inactive=DAYS:当密码过期后经过多少天该帐号会被禁用

修改用户属性 usermod命令
格式:usermod [选项]…用户名
常用选项:
-l:更改用户账号的登录名字
-c:修改用户备注
-L:锁定用户账号
-∪:解锁用户账户 (passwd -l锁定的用户,通过usermod -U解锁两次)
以下选项与useradd命令中的含义相同: -u、 -d、 -e、-s、 -c、-g、-G

删除用户账号userdel
格式:userdel 用户名
常用选项:
-r :删除用户的同时删除用户的宿主目录

关于用户及密码相关控制文件
grep -v -E “$|#” /etc/login.defs
MAIL_ DIR /var/spool/mail #用户邮件存放目录
PASS_ MAX DAYS 99999 #密码默认 最长有效期
PASS_ MIN_ DAYS 0 #密码默认最短有效期
PASS_ MIN_ L EN 5 #密码默认长度
PASS_ WARN_ AGE 7 #密码过期警告时间
UID_ MIN 1000 #普通用户起始UID范围
UID_ MAX 60000 #普通用户结束UID范围
SYS_ UID_ MIN 201 #系统用户起始UID范围
SYS_ UID_ MAX 999 #系统用户结束UID范围
GID MIN 1000 #普通组起始GID范围
GID_ MAX 60000 #普通组结束GID范围
SYS_ GID_ MIN 201 #系统组起始GID范围
SYS_ GID_ MAX 999 #系统组结束GID范围
CREATE_HOME yes #是否创建用户宿主目录
UMASK 077 #用户宿主目录默认权限
USERGROUPS_ENAB yes #表示userdel删除用户时,如果该用户用户组如果没有成员存在,则会删除该用户组
ENCRYPT_METHOD SHA512 #表示用户密码加密方式,此处表示用MD5加密密码
grep -v -E “^ $ |^#” /etc/useradd
GROUP=100
HOME=/home #把用户的主目录建在home中
INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用
EXPIRE= #帐号终止日期,不设置表示不启用;
SHELL=/bin/bash #所用SHELL的类型;
SKEL =/etc/skel #默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的
/lib64/security/pam_ cracklib.so
控制密码复杂度的关键文件,Redhat公司专门]开发了crackib这个安装包来判断密码的复杂度。
man pam_ crackib
retry=N #改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来
minlen=N #新密码最低可接受的长度
difok=N #默认值为10。这个参数设置允许的新、旧密码相同字符的个数。不过,如果新密码中1/2的字符和旧密码不同,则新密码被接受
dcredit=N #限制新密码中至少有多少个数字
ucredit=N #限制新密码中至少有多少个大写字符。
Icredit=N #限制新密码中至少有多少个小写字符。

组账号管理
组账号概述
组:用户集合,组的存在便于管理多个用户权限
组账号分类:
基本组(私有组)主组,用户最多一个基本组,不可删除
附加组(公共组)用户可属于多个附加组,可删除
UID:用户标识号
GID:组标识号,私有组通过GID查找

组账号文件
/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号的密码信息(较少使用)
root: x:0:zhangsan
第1个字段:组名
第2个字段:密码占位符
第3个字段: GID
第4个字段:组内的成员信息

添加组账号groupadd命令
格式:groupadd [-g GID]组账号名
常用选项:
-g GID

设置组账号密码(极少用),添加,删除组成员gpasswd命令
格式:gpasswd [选项]…组账号名
常用选项:
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M: 定义组成员列表,以逗号分隔
增加或删除组成员,也可用vi编辑器对/etc/group文件直接编译修改

删除组账号groupdel命令
格式:groupdel 组账号名

查询命令——id,groups,finger,w,whoami,who
1,id命令
作用:查询用户身份标识,查用户的id(包括组id)
格式:id [用户名]
2,groups命令
作用:查询客户所属的组
格式:groups [用户名]
3,finger 命令(需安装)
作用:查询账号的详细信息
格式:finger [用户名]
whoami:查询当前登录的账号名
who:查询以登录到主机的用户
w:查询已登录到主机的用户信息
踢出登录系统的用户
fuser -k /dev/tty1

权限及归属管理
1,基本访问权限
读权限r:针对目录可以查看目录的列表(|s) ,针对文件可以查看文件内容(cat more less head tail)
写权限w:针对目录可以改动目录的列表内容(rm touch mkdir cp mv),针对文件可以修改文件内容(vim sed)
可执行x:针对目录可以切换(cd) ,针对文件允许运行程序(二 进制文件,脚本文件)
读写执行
rwx=4+2+1
2,归属(所有权)
属主:拥有该文件的用户账号
属组:拥有该文件的组账号
3,查看文件的权限和归属
第一位表示文件类型
-:表示一般文件
d:表示目录
l:表示软连接
p:表示PIPE管道文件
s:表示socket通信套接字文件
c:表示字符设备文件
b:表示块设备文件

 

 

 

 

设置文件或目录的权限chmod命令
格式:
chmod [-R] [ugoa] [±=] [rwx] 参数
chmod [-R] [nnn] 参数
常用选项:
-R:表示以递归的方式设置目录及目录下的所有子目录及文件的权限,不加R的话只会修改当前指定目录
u:属主
g:属组
o:其他人
a:所有人
+:添加
-:删除
=:重置
nnn:8进制的数字权限,如:777 666 644 755 等
注意:在建立目录时用-m选项可以直接设置新建目录的权限
mkdir 123 -m 777

设置文件的归属chown命令
格式:
chown:属主,文件
chown:属组,文件 = chown :属组 文件
chgrp 属组 文件
chown:属主:属组 文件

权限掩码umask

 

 

 

 

扩展知识点

1,ACL权限控制
ACL概述
ACL(Access Control List),主要作用可以提供除属主,属组,其他人的rwx权限之外的细节权限设定
2,ACL的权限控制
使用者(user)
群组(group)
默认权限掩码(mask)

启动ACL
yum -y install acl

ACL的设置,setfacl命令
格式:setfacl [选项] [acl参数] 目标文件或目录
常见选项:
-m:设置后续的acl参数,不可与-x一起使用
-x:删除后续的acl参数,不可与-m一起使用
-b:删除所有的acl参数
-k:删除默认的acl参数
-R:递归设置acl参数
-d:设置默认acl参数,只对目录有效

 

 

增加用户Tetsu与redhat组具有读写权限,
useradd Tetsu
groupadd redhat
setfacl -m u:Tetsu:rw /test/123.txt
setfacl -m g:redhat:rw /test/123.txt


ACL的查询 getfacl命令
格式:getfacl 文件或目录
getfacl /test/123.txt

 

getfacl: Removing leading '/' from absolute path names
# file: test/123.txt
# owner: root
# group: root
user::rw-
user:Tetsu:rw-
group::r--
group:redhat:rw-
mask::rw-
other::r--

 

 

权限掩码

 

 

递归修改目录下现有文件的ACL设置

 

 

递归式修改目录及目录下的ACL设置,仅对当前存在的文件生效,但新建文件并不具有相同的ACL设置。

预设ACL权限

-d:设置默认acl参数,只对目录有效

 

 

删除单个ACL设置

 

 

删除某文件或目录全部ACL设置

 

 

递归删除/test/目录及其目录下所有文件的ACL设置

 

 

特殊权限 SUID SGID SBIT

 

 

 

 chmod 2777 /test/

 

 

chmod 1777 /test/ 除了属主和属组,其他用户有777权限也不能删除/test/下的文件

 

 

posted @ 2022-11-30 08:51  靖安yj  阅读(611)  评论(0编辑  收藏  举报