玩转linux用户权限
用户
-
定义: 用户是系统中的一个个体,可以是一个人、一个程序或一个系统服务。每个用户都有一个唯一的用户名(user name)和一个用户 ID(UID),用户 ID 是系统内部用于标识用户的数字。
-
权限: 每个用户拥有自己的家目录(home directory),其中包含了用户私有的文件和设置。用户还有一套权限,用于决定他们能够访问和执行哪些文件和命令。
创建用户
1 adduser
adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码
adduser newuser
对应的删除命令为:deluser
2 useradd
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。
对应的删除命令为:userdel。
3 自动创建用户脚本
#!/bin/bash
#使用 sh add_user_sudo.sh dev dev123456
#创建用户并设置密码
name=$1
pass=$2
group=dev
#echo "you are setting username : ${name}"
#echo "you are setting password : $pass for ${name}"
#创建用户
useradd -s /bin/bash -m -g $group $name
if [ $? -eq 0 ];then
echo -e "\033[32m用户${name}:创建成功\033[0m"
else
echo -e "\033[31m用户${name}:创建失败\033[0m"
exit 1
fi
# 更改组内权限
echo umask 0002 >> /home/$name/.bashrc
echo "$name:$pass" | sudo chpasswd
if [ $? -eq 0 ];then
echo -e "\033[32m用户${name}:密码设置成功!!!"
else
echo -e "\033[31m用户${name}:密码密码设置失败\033[0m"
fi
#追加用户至sudoers
echo "$name ALL=(ALL:ALL) ALL" >> /etc/sudoers
names="cat /etc/sudoers | grep -w $name| wc -l"
if [ $names -eq 0 ];then
echo -e "\033[31m用户$name:sudoers修改失败,请检验\033[0m"
else
echo -e "\033[32m用户$name:sudoers修改成功\033[0m"
fi
# 添加docker 使用权限
usermod -aG docker $name
if [ $names -eq 0 ];then
echo -e "\033[31m用户$name:添加docker失败,请检验\033[0m"
else
echo -e "\033[32m用户$name:添加docker成功\033[0m"
fi
# 为用户设置/bin/bash为默认
chsh -s /bin/bash $name
echo -e "\033[33m所创建账号为:$1 \033[0m"
echo -e "\033[33m所创建账号密码为:$2 \033[0m"
sh add_user_sudo.sh dev dev123456
删除用户
sudo userdel tt
sudo userdel -r tt # 连同用户主目录一起删除,如果创建时主目录已经存在则不能删除
用户组
用户组(User Group):
- 定义: 用户组是用户的集合,它允许在一个组中汇总多个用户,并为这个组分配一些共同的权限。每个用户可以属于一个或多个用户组。每个用户组有一个唯一的组名(group name)和一个组 ID(GID),组 ID 是系统内部用于标识用户组的数字。
- 权限: 当用户属于一个用户组时,他们可以继承该用户组的权限,这对于简化权限管理非常有用。例如,如果一个用户组具有对某个目录的写权限,属于该组的所有用户都具有对该目录的写权限。
查看用户组数
groups
cat /etc/group #查看用户组列表
# 括组名、组密码(通常是 "x" 表示密码存储在 /etc/gshadow 文件中)、组 ID(GID)以及属于该组的用户列表
sudo addgroup group_name # 创建新的用户组
sudo adduser username group_name # 创建用户并将其添加到用户组:
sudo usermod -aG group_name username # 对已经次创建用户实现
sudo delgroup group_name # 删除用户组
groups username # 查看用户所属的用户组
文件权限
sudo chown new_owner:new_group file_path # 更改文件所有者和所属用户组
# 将 new_owner 替换为新的所有者用户名,将 new_group 替换为新的用户组名,将 file_path 替换为要更改权限的文件路径。
sudo chgrp new_group file_path # 更改文件所属用户组
sudo chmod permissions file_path # 将 permissions 替换为新的权限设置,将 file_path 替换为要更改权限的文件路径。权限可以使用数字(例如,755)或符号(例如,u+rwx,g+rx,o+r)表示。
例如,将文件 example.txt 的所有者更改为 john,所属用户组更改为 staff,并将权限设置为 rw-r--r--,可以执行以下命令:
sudo chown john:staff example.txt
sudo chmod 644 example.txt