Linux用户权限管理
目录
一、Linux用户工作组
- 用户
adduser username # 通过adduser,添加一个普通用户
passwd username # 修改用户密码
useradd -g groupName username # 新建用户同时增加到工作组 -g 所属组 -d 家目录 -s 所用的SHELL
userdel username
userdel -r username # 删除用户和相应的目录
usermod –G username username # 强制删除该用户的主目录和主目录下的所有文件和子目录
passwd username –l # 锁定用户账号,禁止使用
passwd username –u # 解锁用户账号
passwd username -n 天数 # 密码不可改天数 (-x 天数 密码过期天数| -w 天数 警告天数)
chage -d 0 username # 用户登录后必须修改密码
chage -M 60 -m 7 -W 7 username # 60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息
chage -l username # 用户以及密码的有效期
- 其他:临时禁用用户账号,在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上就可以了。想恢复该用户,去掉即可。
- 工作组
groupadd groupName # 新建工作组
groupdel groupName
- 用户与工作组
groups username #查看用户所属组
usermod -G groupName1,groupName2 username #覆盖原来的组,换成groupName1,groupName2
usermod -aG groupName3 username #附加上groupName3组
sudo gpasswd -A user1,user2 groupName #设置群组管理员为user1,user2
sudo gpasswd -M user1,user2 groupName #添加多个用户到groupName组
gpasswd -a username groupName #添加单个到组(组管理员操作命令)
gpasswd -d userName groupName #删除组中单个用户(组管理员操作命令)
4.显示用户和用户组信息
- 用户列表文件:/etc/passwd
- 用户组列表文件:/etc/group
who #显示目前登录用户
w username #查看某一用户的在线信息
id username #显示用户及用户组信息
lid -g groupName #查询用户组下所有用户
last username #显示用户登录历史记录
二、Linux用户权限
- linux chmod u+s、g+s、o+t 解析 :https://www.dazhuanlan.com/a1450155594/topics/981916
chmod 755 file #对文件或目录,赋rwxr-xr-x权限,文件属主、同组用户、其他用户
chmod +x file #添加可执行权限
chmod u+s file #运行时以属主身份运行
chown -R username:groupName fileOrDir # 修改文件所有者及组 -R递归处理,将指定目录下的所有文件及子目录一并处理
chgrp -v -R groupName fileOrDir # 于变更文件或目录的所属群组
三、赋予普通用户root权限(sudoers)
- 方法一: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示(推荐):
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
username ALL=(ALL) ALL
修改完毕,现在可以用username帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。
- 方法二: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -aG wheel username #二选一
#usermod -g root username
修改完毕,现在可以用username帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。
- 方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示(不推荐):
username:x:500:500:username:/home/username:/bin/bash
修改后如下
username:x:0:500:username:/home/username:/bin/bash
保存,用username账户登录后,直接获取的就是root帐号的权限。
四、禁止普通用户 su 到 root
- 需分别修改
/etc/pam.d/su和/etc/login.defs两个配置文件
- 去除
/etc/pam.d/su文件中如下行的注释:
#auth required pam_wheel.so use_uid
- 在
/etc/login.defs文件中加入如下配置项:
# only people in group wheel can use su command
SU_WHEEL_ONLY yes
- 若希望其他指定普通用户su至root,可以执行如下命令将该用户添加至wheel组中
gpasswd -a username wheel
- 若用户可以sudo,则可添加自己到wheel组,此方案失效。所以这只能针对真正意义上的普通用户。
五、其他
- /etc/sudoers文件相似配置说明
username ALL=(ALL) ALL
%groupName ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: ALL
%groupName ALL=(ALL) NOPASSWD: ALL
username ALL=(ALL) ALL,!/bin/su
# 第一行:允许用户username执行sudo命令(需要输入密码).
# 第二行:允许用户组groupName里面的用户执行sudo命令(需要输入密码).
# 第三行:允许用户username执行sudo命令,并且在执行的时候不输入密码.
# 第四行:允许用户组groupName里面的用户执行sudo命令,并且在执行的时候不输入密码.
# 第五行:允许用户username执行sudo命令(需要输入密码),但不允许以root身份使用su命令 **
2.示例
- 我们期望用户test 可以以管理员权限执行/usr/bin、/bin下的所有命令,但是不能修改其他用户密码以及kill其他用户进程,可以配置如下:
username ALL=/usr/bin/, !/usr/bin/passwd, /bin/, !/bin/kill
六、推荐阅读
- 线上Linux服务器运维安全策略-云栖社区-阿里云 https://yq.aliyun.com/articles/549131?spm=a2c4e.11153940.0.0.35f85274oQWkcc
- Linux中的/etc/shadow文件:https://www.baeldung.com/linux/shadow-passwords