用户和用户组
Linux 中管理员 UID 为 0,系统用户 UID 为 1~999,管理员创建的普通用户 UID 从 1000 开始。可以把多个用户加入到同一个用户组中,从而方便为组中的用户统一规划权限或指定任务。创建每个用户时,将自动创建一个与其同名的基本用户组,一个用户只有一个基本用户组,但是可以有多个扩展用户组。
useradd [选项] 用户名
用于创建新的用户,默认的用户家目录会被存放在 /home 中,默认的 Shell 解释器为 /bin/bash。
useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
# -d 指定家目录,-u 指定默认 UID,-s 指定默认 Shell 解释器
# 一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中
groupadd [选项] 群组名
用于创建用户组。
groupadd name1
usermod [选项] 用户名
用于修改用户属性。用户的信息保存在/etc/passwd 文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用 usermod 命令修改已经创建的用户信息,诸如用户的 UID、基本/扩展用户组、默认终端等。
usermod -G root linuxprobe
usermod -u 8888 linuxprobe
passwd [选项] [用户名]
用于修改用户密码、过期时间、认证信息等,普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码。
userdel [选项] 用户名
用于删除用户,用户的家目录默认会保留下来,此时可以使用-r 参数将其
删除。
userdel -r linuxprobe
文件权限
Linux 系统使用不同的字符来加以区分文件类型,- 普通文件,d 目录文件, l 链接文件,b 块设备文件,c 字符设备文件,p 管道文件。每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
1)chmod [参数] 权限 文件或目录名称
设置文件或目录的权限。
chmod 760 test.txt
2)chown [参数] 所有者:所属组 文件或目录名称
设置文件或目录的所有者和所属组。
chown root:bin test.txt
SUID、SGID 与 SBIT 的特殊权限位
SUID 让二进制程序的执行者临时拥有属主的权限,原本有 x 执行权限会写成 s,原本没有 x 执行权限则会被写成 S。
SGID 让执行者临时拥有属组的权限,或让某个目录中创建的文件自动继承该目录的用户组。
SBIT 可确保用户只能删除自己的文件,而不能删除其他用户的文件。当目录被设置 SBIT 特殊权限位后,文件的其他人权限部分,原本有 x 执行权限则会写成 t,原本没有 x 执行权限则会被写成 T。chmod 参数 o+t 代表设置 SBIT 粘滞位权限。
文件的隐藏属性
1)chattr [参数] 文件
用于设置文件的隐藏权限,如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。
2)lsattr [参数] 文件
用于显示文件的隐藏权限。
文件访问控制列表(ACL)
对某个指定的用户进行单独的权限控制,如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL。
1)setfacl [参数] 文件名称
针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。针对目录文件需要使用 -R 递归参数;针对普通文件使用 -m 参数;删除某个文件的 ACL 使用-b 参数。
setfacl -Rm u:linuxprobe:rwx /root
2)getfacl 文件名称
用于显示文件上设置的 ACL 信息。ls 命令看不到 ACL 表信息,当文件的权限最后一个点(.)变成了加号(+),则该文件已经设置了 ACL 。
su 命令与 sudo 服务
su 命令使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。
su - linuxprobe
# 减号(-)意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息
sudo 命令把特定命令的执行权限赋予给指定用户,既可保证普通用户能够完成特定的工作,也可以避免泄露 root 管理员密码。root 管理员可以使用 visudo 命令编辑 sudo 服务的配置文件。