linux用户和组的权限管理

1、用户信息文件–/etc/passwd

每个用户必须属于一个主组,都有唯一一个用户编码(UID),
用户可以加入其它多个额外组中,称为附加组,从属组

用户基本信息:/etc/passwd(七列信息)
[root@szb ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
编号参数说明
1root用户名
2x用户密码,安全考虑,转移/etc/shadow文件中
30UID(0为超级用户;0-999系统用户;1000及以上普通用户,范围0–65535)
40GID
5root用户说明信息
6/root用户家目录,普通用户:/home/username
7/bin/bash默认shelll类型

2、用户密码文件–/etc/shadow

用户密码信息:/etc/shadow(九列信息)
[root@szb ~]# cat /etc/shadow   
root:$1$KxONfQUg$Y.f42vKBWXVTEKU2/2h8o1:19157:0:99999:7:::
bin:*:17834:0:99999:7:::
编号参数说明
1root用户名,属于/ect/passwd文件对应用户名密码
2$1$KxONfQUg$Y.f42vKBWXVTEKU2/2h8o1三段:1.单向加密算法;2.salt,加密算法的随机因子;3.密文
319157修改密码日期,数值是1970.1.1到修改密码那天的天数
40再次修改密码的天数,0(随时可以修改)
599999修改完密码后多少天过期
67密码过期前7天进行提示
7密码过期后可使用天数,为空则不限制
8用户账号被禁用天数(1970至今的天数),为空则永久有效
9保留内容

3、用户组文件–/etc/group

系统组:0-1000
普通组:>=1000
用户组信息:/etc/group(四列信息)
1.!!将用户加入到组,只有超级用户root有权限实现
2.用户知道组密码,newgrp命令可加入

[root@szb ~]# cat /etc/group
root:x:0:
bin:x:1:
编号参数说明
1root组名称
2x用户组密码,安全考虑,转移/etc/gshadow文件中
30组编号,GID
4附加组用户列表,逗号分隔

4、用户组密码文件–/etc/gshadow

用户组密码信息:/etc/gshadow(四列信息)
存放组密码和组管理信息

[root@szb ~]# cat /etc/gshadow
root:::
bin:::
编号参数说明
1root组名称
2组管理密码,!开头密码表示被锁定
3该管理组的管理员用户账号,逗号分隔
4附加组用户列表,逗号分隔

5、配置文件修改

注意:
修改以上四个文件,建议使用以下命令进行编辑,
具有文件格式检查功能:vipw 和 vigr
检查用户和组相关配置文件格式一致性:pwck 和 grpck
文本编辑:
1./etc/passwd
[root@szb ~]# vipw

2./etc/shadow
[root@szb ~]# vipw -s

3./etc/group
[root@szb ~]# vigr

4./etc/gshadow
[root@szb ~]# vigr -s
文本格式检查:
1./etc/passwd或/etc/shadow文件
[root@szb ~]# pwck /etc/passwd
[root@szb ~]# pwck /etc/shadow

2./etc/group或/etc/gshadow文件
[root@szb ~]# grck /etc/group
[root@szb ~]# grck /etc/gshadow

6、用户和用户组管理

1. getent 命令
为了安全考虑,使用专有命令维护用户信息
1. getent 命令可查看用户数据块信息,此用法同样适用用户信息四文件
[root@szb ~]# getent passwd  # 查看passwd全部信息
[root@szb ~]# getent passwd root # 查看root用户对应信息

2. chfn 和 finger 命令可以修改和查看用户描述信息(/etc/passwd的第五列)
[root@szb ~]# finger username 
2. id–groups 命令
1. id 命令可查看用户及组信息
[root@szb ~]# id root
uid=0(root) gid=0(root) groups=0(root)

2. groups 命令查看用户属于哪个组
[root@szb ~]# groups szb   
szb : szb
3. useradd 命令
1. useradd 命令创建用户
2. 常用选项:一般常用-s、-r、-d
-u UID       # 指定创建用户的UID
-g GID		 # 指定用户所属主要组,组名称或GID
-o			 # 配合-u使用,不检查UID唯一性
-c COMMENT   # 用户注释信息
-d HOME_DIR  # 指定路径为家目录
-s SHELL     # 默认shell程序,列表/etc/shells文件
-m           # 不创建家目录,一般用于非系统用户
-M           # 创建家目录,一般用于系统用户
-r           # 创建系统用户
-G           # 为用户指定附加组,组必须先存在
-N           # 不创建和用户同名的私用组做主组
3. 创建用户的默认配置:/etc/default/useradd
4. 存放创建新用户时和密码相关默认信息:/etc/login.defs

5.示例
[root@szb ~]# cat /etc/shells   # 查看shell类型
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

[root@szb ~]# useradd -d /data/mysql -s /sbin/nologin -g mysql -G root -M -r -u 336 mysql

6.新建普通用户后,使用passwd给用户初始化一个密码,不然/etc/shadow第二列密码默认!!被锁定,无法登录
4. groupadd 命令
1. groupadd 命令创建用户组
2. 常用选项:一般常用-g、-r
-g GID		 # 指定创建组的GID
-f			 # 组存在返回成功,将忽略-g选项
-K,key=value  # 覆盖/etc/login.cfg默认值
-o           # 允许使用已存在的GID创建新的组
-p           # 使用加密的密码
-r           # 创建系统组

2.示例
[root@szb ~]# groupadd -g 336 -o -r mysql
5. 修改用户和用户组信息

使用usermod,chsh,groupmod,gpasswd,groupmems等命令修改用户和组相关信息

1)usermod 命令
1.作用:修改用户信息
2.选项:
-d       # 修改用户家目录
-m       # 配合-d,移动家目录数据到新目录
-G       # 修改附加组
-g       # 修改指定GID,前提此组存在
-u       # 修改UID
-s       # 修改使用新的shell类型
3.示例:
[root@szb ~]# id szb
uid=1001(szb) gid=1001(szb) groups=1001(szb)
[root@szb ~]# usermod -G root szb
[root@szb ~]# id szb
uid=1001(szb) gid=1001(szb) groups=1001(szb),0(root)
2)chsh 命令
1.作用:修改用户登录shell
2.选项:
-l       # 显示/etc/shells所有的shell
-s       # 修改某个用户登录的shell类型
3.示例:
[root@szb ~]# chsh -s /usr/sbin/nologin szb
3)chfn 命令
1.作用:修改用户描述信息
2.示例:
[root@szb ~]# chfn szb
4)passwd 命令
1.作用:修改用户密码
2. 参数选项:
-e          # 修改shadow文件第三个字段为0,用户登录时重置密码
-l          # 和usermod的-L一样,在shadow密码前加叹号,锁定用户
3.示例:
[root@szb sbin]# passwd -e szb
Expiring password for user szb.
passwd: Success
[root@szb sbin]# echo mima | passwd --stdin szb  # 非交互式修改用户口令,修改了shadow第2,4字段
5)chage 命令
1.作用:修改和查看用户密码信息
2. 参数选项:
-m      # 修改shadow第四个字段,最早修改密码天数
-M      # 修改shadow第五个字段,最晚修改密码天数
-l      # 修改shadow第七个字段,密码失效后宽限时间
3.示例:
[root@szb ~]# chage -l szb
6)groupmod命令
1.作用:可以修改组信息
2.参数:
-n:修改组名
-g:修改组的GID
-p:设置组密码
3.示例:
[root@szb ~]# groupmod -g 2000 -n newapp szb
7)groupmems命令
1.作用:管理指定组的成员
2.参数
-g:指定要操作的组
-a/d:添加、删除一个组的成员
-l;列出所有组成员
-p:清空所有用户
3.示例:
[root@szb test]# groupsmems -g szb -a sx
-bash: groupsmems: command not found
[root@szb test]# groupmems -g szb -a sx
[root@szb test]# groupmems -g szb -l
szb  sx
[root@szb test]# groupmems -g szb -p
8)gpasswd命令
gpasswd
1.用法:修改和设置组密码
2.参数:
-a:添加一个用户到该组中
-d:删除
-r:取消组密码
-A:设置组管理员
-M:设置组的成员
3.newgrp  主组名   --切换主组
9)userdel命令
userdel
1.用法:删除用户
2.参数
-r:将对应的家目录及邮件文件一起删除
3.示例
[root@szb ~]# userdel -r szb

groupdel
1.用法:删除用户组(若是一个用户的主要组,则不能删除)
6、 切换用户身份
1)su命令
su:切换到root身份
1.参数:
-:开启login shell(su - szb 切换用户同时,当前工作目录和环境变量都切换)
-c:执行命令
-g:指定主要组
-G:指定附属组
-m:保留环境变量
2.示例:
[szb@szb ~]# su - root -c 'cat /etc/shadow'
2)sudo命令
普通用户使用sudo,需要root用户事先在/etc/sudoers中授权才行
154--162
7.、文件权限管理
1)文件权限分类
文件权限文件目录
r此文件可读取文件内容可以使用ls查看目录中的文件列表
w此文件可修改文件内容在目录中创建、删除文件
x此文件可执行文件可切换到目录中,访问目录内文件
查看权限:
[root@szb ~]# ls -l /var/log/message
[root@szb ~]# stat /var/log/message
2)chown命令–chgrp
chown
作用:修改文件的属主信息
参数:
-h:只针对链接文件设置,非指向的文件
-R:对目录中的文件递归处理
--reference=RFILE:参考RFILE文件的权限设置权限
示例:
[root@szb test]# ll file
-rw-r--r-- 1 root root 0 Jun 20 11:00 file
[root@szb test]# chown szb file
[root@szb test]# ll
total 0
-rw-r--r-- 1 szb root 0 Jun 20 11:00 file
[root@szb test]# chown :szb file  # 修改文件所属组
[root@szb test]# chown szb:szb file  # 修改文件所有者和所属组
[root@szb test]# chown -R szb:szb test # 修改目录下所有文件的属主和属组
chgrp
作用:修改文件的属组信息
示例:
[root@szb test]# chgrp szb file  # 修改文件所属组
3)chmod命令
chmod
作用:设置不同用户群的相关权限
(r):4
(w):2
执行(x):1
1.数字修改文件权限
[root@szb test]# chmod 770 file

2.模式法(MODE)进行修改
[ugoa..][[+-=][perms...]...]:
u--所有者
g--所属组
o--除ug的其他
+:增加权限
-:减少权限
=:重设权限
perms:权限

示例:
[root@szb test]# chmod u=rwx,g=rwx file
[root@szb test]# chmod a-w file      # 设置所有都没有写权限
[root@szb test]# chmod --reference=file1 file      # 设置file权限等同于file1一样
4)umask命令
umask
作用:利用umask可以设置实现用户新建文件的权限
用法:根据文件类型的基准权限与umask值按位取反的数值进行与运算,即默认权限值
1.可设置umask,临时生效,umask 026
2.建议放在~/.bashr中,只对特定用户生效,/etc/bashrc对所有用户生效
[root@szb test]# umask   # 内置命令
0022

0022:
方法1:
1. 第一位为0,表示八进制,默认值不可变
2. 后面三位进行文件权限计算的值
3. ----w--w-   # 022对应字母权限;
4. 000010010   # 上述对应位1有权限,0没有权限进行转化
5. 111101101(按位取反)与普通文件基准权限运算值666(110110110)进行与运算;目录777
6. 结果:644
与运算:0和任何与运算都为0,其余为1

方法2:
直接用默认权限减去umask值,如果有奇数就+1,否则不变

[root@szb test]# ll
total 4
-rw-r--r-- 1 szb  root    0 Jun 20 11:00 file   # 文件权限为644
drwxr-xr-x 2 root root 4096 Jun 20 11:23 szb    # 目录默认权限654

5)特殊权限位(s,s,t)
特殊权限位:SUID SGID Sticky
SUID:4
SGID:2
Sticky:1
SUID权限位
1.作用:通过此程序访问文件,将获得程序所有者的权限
2.例子:
[root@szb test]# ls -l /bin/passwd
-rwsr-xr-x 1 root root 27856 Apr  1  2020 /bin/passwd
3. passwd 的属主执行权限位为s,代表passwd属主可以执行,同时具有SUID权限
   当一个程序没有可执行权限,但设置了SUID,属主可执行权限位为大写的S
SGID权限位
1.作用域:设置在所属组的执行权限位上,可以设置在二进制文件和目录上
2.作用:
  二进制文件:作用类似SUID
  目录:用户在这个目录下新建文件的属组将自动继承此目录的属组	
3. 示例:
[root@szb test]# chmod g+s dir     # 添加SGID权限
Sticky权限位
1.作用域:只针对目录有效
2.作用:
       防止普通用户删除别人文件的权限
       只有此目录下创建文件的这个用户和root用户可以删除操作
3. 示例:
[root@szb test]# ll -d /tmp
drwxrwxrwt. 11 root root 4096 Jun 20 11:33 /tmp   # 具有sticky权限
4.当一个目录有可执行权限,并设置了Sticky权限,使用t表示;
  没有可执行权限,但是设置了Sticky权限,使用T表示
示例:
[root@szb test]# chmod 6775 /bin/cat  # 6 SUID 4  SGID 2 两个权限相加得到
6)文件的特殊属性–chattr
1.chattr命令
作用:增加一些特殊属性

2.lsattr命令
作用:查看这些特殊属性
chattr
1.参数:
-R:递归处理
-+=:去掉、添加、重设属性
-f:隐藏大部分错误信息
-i:不能删除,修改,重命名和创建硬链接
-a:同-i,但是可追加
2.示例:
[root@szb test]# chattr +i file
[root@szb test]# lsattr file
----i--------e-- file
[root@szb test]# mv file file2
mv: cannot move ‘file’ to ‘file2’: Operation not permitted
lsattr
1.参数:
-a:显示所有文件和目录及隐藏文件
-d:显示目录 
-R:递归处理
7)文件的FACL
FACL(File Access Control List)
1.作用:对更多的用户设置不同的权限
2.常用的命令:setfacl(设置facl权限)  getfacl(查看facl权限)
3.所有ACL权限不能超过某个权限,mask设定,对owner和other权限没影响
setfacl
1.参数:
-m: 更改文件的访问控制列表
--set-file=file:从文件中读取访问控制列表条目设定
-b:清除facl格式
2.示例:
[root@szb test]# setfacl -m u:szb:rw file
[root@szb test]# ll file
-rw-rw-r--+ 1 root root 0 Jun 20 12:10 file  # 多了一个加号
# 设置file2 ACL 权限和file一致
[root@szb test]# getfacl file | setfacl --set-file=file2
# 设定ACL权限最高值
[root@szb test]# setfacl -m mask:r file
[root@szb test]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
user:szb:rw-   # 添加了szb用户的读写权限
group::r--
mask::rw-
other::r--

8、面试案例:

示例1:
/etc/fstab 复制到 /data/ 至少需要什么权限:
1.cp命令的执行权限
2./etc/fstab 读权限
3./data/ 写权限和执行权限
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值