Linux学习(四)用户和权限管理

xiaoxiao2021-02-28  88

用户和用户组管理

1、用户管理相关文件

用户管理简介

越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要通过用户配置文件来查看和修改用户信息。

1.1、用户信息文件/etc/passwd,如:root:x:0:0:root:/root:/bin/bash

第1字段:用户名称第2字段:密码标志第3字段:UID(用户ID) 0:超级用户1-449:系统用户(伪用户)500-65535:普通用户第4字段:GID(用户初始组ID)第5字段:用户说明第6字段:家目录 普通用户:/home/用户名超级用户:/root/第7字段:登录之后的Shell

初始组和附加组:

初始组:指用户一登录就立即拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。附加组:指用户可以加入多个其它的用户组,并拥有这些组的权限,附加组可以有多个。

Shell是Linux的命令解析器。在/etc/passwd中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin。

1.2、影子文件/etc/shadow

第1字段:用户名第2字段:加密密码 加密算法升级为SHA512散列加密算法如果密码位是“!!”或“*”代表没有密码,不能登录第3密码:米阿门最后一次修改日期 使用1970年1月1日作为标准时间,每过一天时间戳加1第4字段:两次密码的修改间隔时间(和第3字段相比)第5字段:密码有效期(和第3字段相比)第6字段:密码修改到期前的警告天数(和第5字段相比)第7字段:密码过期后的宽限天数(和第5字段相比) 0:代表密码过期后立即失效-1:则代表密码永远不会生效第8字段:账号失效时间 要用时间戳表示第9字段:保留

时间戳换算:

把时间戳换算为日期 date -d “1970-01-01 16066 days”把日期换算为时间戳 echo (( (date –date=”2017/08/28” +%s)/86400+1))

1.3、组信息文件/etc/group和组密码文件/etc/gshadow 1、组信息文件/etc/group

第一字段:组名第二字段:组密码标志第三字段:GID第四字段:组中附加用户

2、组密码文件/etc/gshadow

第一字段:组名第二字段:组密码第三字段:组管理源用户名第四字段:组中附加用户

2、用户管理相关文件

1、用户的家目录

普通用户:/home/用户名/,所有者和所属组都市此用户,权限是700超级用户:/root/,所有者和所属组都是root用户,权限550

2、用户邮箱

/var/spool/mail/用户名

3、用户模板目录

-/etc/skel/

3、用户管理命令

3.1、用户添加命令useradd useradd [选项] 用户名 选项: -u UID:手工指定用户的UID号 -d 家目录:手工指定用户的家目录 -c 用户说明:手工指定用户的说明 -g 组名:手工指定用户的初始组 -G 组名:之地给你用户的附加组 -s shell: 手工指定用户的登录shell,默认是/bin/bash

useradd test: - grep test /etc/passwd - grep test /etc/shadow - grep test /etc/group - grep test /etc/gshadow - ll -d /home/test/ - ll /var/spool/mail/test

用户默认值文件:

/etc/default/useradd GROUP=100 #用户默认组HOME=/home #用户家目录INACTIVE=-1 #密码过期宽限天数(shadow文件第7字段)EXPIRE= #密码失效时间(第8字段)SHELL=/bin/bash #默认shellSKEL=/etc/skel #模板目录CREATE_MAIL_SPOOL=yes #是否建立邮箱/etc/login.defs PASS_MAX_DAYS 99999 #密码有效期(第5字段)PASS_MIN_DAYS 0 #密码修改间隔(第4字段)PASS_MIN_LEN 5 #密码最小5位(PAM)PASS_WARN_AGE 7 #密码到期警告UID_MIN 500 #最小UID范围GID_MAX 60000 #最大UID范围ENCRYPT_METHOD SHA512 #加密模式

3.2、修改用户密码passwd passwd [选项] 用户名 选项: -S 查询用户密码的密码状态,仅root哟给你胡可用。 -l 暂时锁定用户,仅root用户可用。 -u 解锁用户,仅root用户可用。 –stdin 可以通过管道符输出的数据作为用户的密码。

2、查看密码状态

passwd -S test test PS 2017-08-29 0 99999 7 -1 (密码已设置,使用 SHA512 加密。) # 用户名密码设定时间 2017-08-29 # 密码修改间隔时间 0 # 密码有效期 99999 # 警告时间 7 # 密码不失效 -1

3、锁定用户和解锁用户

passwd -l test passwd -u test

4、使用字符串作为用户的密码

echo "123" | passwd --stdin test

3.3、修改用户信息usermod,修改用户密码状态change usermod [选项] 用户名 选项: -u UID: 修改用户的UID号 -c 用户说明: 修改用户得说明信息 -G 组名: 修改用户得附加组 -L: 临时锁定用户(Lock) -U: 解锁用户锁定(Unlock)

示例:

usermod -c "test user" test #设定用户说明 usermod -G root test # 将test用户放入root组 usermod -L test #锁定test用户 usermod -U test #解锁test用户

chage [选项] 用户名 选项: -l: 列出用户得详细密码状态 -d 日期: 修改密码最后一次更改日期(shadow第3字段) -m 天数: 两次密码修改间隔(第4字段) -M 天数: 密码有效期(第5字段) -W 天数: 密码过期前警告天数(第6字段) -I 天数: 密码过后宽限天数(第7字段) -E 日期: 账号失效时间(第8字段)

chage -d 0 test # 这个命令是把密码修改日期归0(shadow第3字段),这样用户一登录就要修改密码

3.4、删除用户userdel、用户切换命令su 1、删除用户userdel userdel [-r] 用户名 选项:-r 删除用户的同时删除用户家目录

手工删除用户

vim /etc/passwd vim /etc/shadow vim /etc/group vim /etc/gshadow rm -rf /var/spool/mail/test rm -rf /home/test/

2、查看用户ID

id 用户名

3、切换用户身份su su [选项] 用户名 选项: -: 选项只使用“-”代表连带用户得环境变了一起切换 -c命令:仅执行一次命令,而不切换用户身份

su - root #切换成root su - root -c "useradd user1" #不切换成root,但是执行useradd命令添加user1用户

4、用户组管理命令

1、添加用户组 groupadd [选项] 组名 选项: -g GID 指定组ID

2、修改用户组 groupmod [选项] 组名 选项: -g GID: 修改组ID -n 新组名: 修改组名

groupmod -n gourp1 tg # 把组名tg修改为group1

3、删除用户组 groupdel 组名

4、把用户添加入组或从组中删除 gpasswd [选项] 组名 选项: -a 用户名: 把用户加入组 -d 用户名: 把用户从组中删除

权限管理

1、ACL权限

1.1、ACL权限简介与开启

查看分区ACL权限是否开启

dumpe2fs -h /dev/sda3 # dumpe2fs命令是查询指定分区详细文件系统信息得命令 选项:-h 仅显示超级块中信息,而不显示磁盘块组得详细信息

临时开启分区ACL权限

mount -o remount,acl/ #重新挂载根分区,并挂载加入acl权限

永久开启分区ACL权限

vim /etc/fatab UUID=f3aeaf65-ba7b-473d-9826-aba201319448 / ext4 defaults,acl 1 1 #加入acl mount -o remount/ #重新挂载文件系统或重启系统,使修改生效

1.2、查看与设定ACL权限 1、查看ACL命令

getfacle 文件名 #查看acl权限 setfacl 选项 文件名 选项: -m 设定ACL权限 -x 删除指定的ACL权限 -b 删除所有的ACL权限 -d 设定默认ACL权限 -k 删除默认ACL权限 -R 递归设定ACL权限

设定权限示例:

useradd zhangsan useradd lisi useradd st groupadd tgroup mkdir /project chown root:tgroup /project chmod 770 /project setfacl -m u:st:rx /project #给用户st赋予r-x权限,使用“u:用户:权限”格式

给用户组设定ACL权限

groupadd tgroup2 setfacl -m g:tgroup2:rwx /project #为组tgroup2分配ACL权限,使用“g:组名:权限”格式

1.3、最大有效权限与删除ACL权限 1、最大有效权限mask mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。

setfacl -m m:rx 文件名 #设定mask权限为r-x,使用“m:权限”格式

2、删除ACL权限

#删除指定用户的ACL权限 setfacl -x u:用户名 文件名 #删除指定用户组的ACL权限 setfacl -x g:组名 文件名 # 文件恢复原始权限 setfacl -b 文件名

1.4、默认ACL权限和递归ACL权限 1、递归ACL权限 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限

setfacl -m u:用户名:权限 -R 文件名 #递归设定权限

2、默认ACL权限 默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。

setfacl -m d:u:用户名:权限 文件名

示例:

setfacl -m d:u:user3:rx -R /project/ #递归设置默认权限

2、文件特殊权限

2.1、SetUID

只有可以执行的二进制程序才能设定SUID权限命令执行者要对该程序拥有执行权限命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

ll /usr/bin/passwd #s就是SetUID权限 -rwsr-xr-x. 1 root root 25980 222 2012 /usr/bin/passwd

cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

ll /bin/cat

设定SetUID的方法

4代表SUID chmod 4755 文件名chmod u+s 文件名

取消SetUID的方法

chmod 755 文件名chmod u-s 文件名

危险的SetUID

关键目录应严格控制写权限,比如:“/”、“/usr”等用户的密码设置要严格遵守密码三原则对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

2.2、SetGID 1、SetGID针对文件的作用

只有可执行的二进制程序才能设置SGID权限命令执行者要对该程序拥有执行权限命令执行在执行程序的时候,组身份升级为该程序文件的属组SetGID权限同样只有在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

执行过程:

/usr/bin/locate是可执行二进制程序,可以赋予SGID执行用户user1对/usr/bin/locate命令拥有执行权限执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库命令结束,user1用户的组身份返回为user1组

2、SetGID针对目录的作用

普通用户必须对此目录拥有r和x权限,才能进入此目录普通用户在此目录中的有效组会变成此目录的属组若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

设定SetGID

2代表SGID chmod 2755 文件名 chmod g+s 文件名

取消SetGID

chmod 755 文件名 chmod g-s 文件名

示例:

mkdir /tmp/test chmod 2777 /tmp/test ll -d /tmp/test su - user1 cd /tmp/test touch a ll

2.3、Sticky BIT 1、SBIT粘着位作用

粘着位目前只对目录有效普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其它用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其它用户建立的文件

示例:

ll -d /tmp/ drwxrwxrwt. 7 root root 4096 831 17:45 /tmp/

2、设置与取消粘着位

设置粘着位 chmod 1755 目录名chmod o+t 目录名取消粘着位 chmod 777 目录名chmod o-t 目录名

3、文件系统属性chattr权限

1、chattr命令格式 chattr [+-=][选项] 文件或目录名 +:增加权限 -: 删除权限 =:等于某权限 选项: - i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。 - a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。

2、查看文件系统属性 lsattr 选项 文件名 选项: -a 显示所有文件和目录 -d 若目标是目录,仅列出目录本省的属性,而不是子文件的

4、系统命令sudo权限

1、sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行sudo的操作对象是系统命令

2、sudo使用

[root@localhost ~]# visudo #实际修改的是/etc/sudoers文件 root ALL=(ALL) ALL #用户名被管理主机的地址=(可使用的身份)授权(绝对路径) # shuai ALL=/sbin/shutdown -r now # %wheel ALL=(ALL) ALL #%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

3、普通用户执行sudo赋予的命令

[root@localhost ~]# su - shuai [shuai@localhost ~]$ sudo -l #查看可用的sudo命令 [shuai@localhost ~]$ sudo /sbin/shutdown -r now # 普通用户执行sudo赋予的命令
转载请注明原文地址: https://www.6miu.com/read-59827.html

最新回复(0)