账号与权限管理
管理用户账号
用户账号概述
用户分类
超级用户:root,人为交互最高权限用户,system为最高权限用户。
普通用户:通过管理管理员创建,权限受到一定限制。
程序用户:不允许登陆,维持系统或某个程序的正常运行。
用户账号管理
/etc/passwd:包含用户账号的基本信息
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
账号名称:密码占位符:UID:GID:用户说明:家目录:登陆shell
详细解释
root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。
x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件
Linux系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有
root用户可以浏览和操作,最大限度地保证了密码的安全。
补充:
注意!!!,虽然"x"并不表示真正的密码,但也不能删除,如果删除了 "x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
0:用户账号的 UID 号。
0:所属基本组账号的 GID 号
root:描述性信息,此字段只是用来解释这个用户的意义而已
/root:宿主目录,即该用户登录后所在的默认工作目录
注:通常称为用户的主(家)目录。例如:root主目录为/root,普通用户odysee的主目录为/home/odysee
/bin/bash录 Shell 等信息,用户完成登录后使用的
/etc/shadow:包含用户账号的密码信息(影子文件)
[root@localhost ~]# head -1 /etc/shadow
root:$6$4/ne8o5V38hiA2jr$6SclA1hllj8FPXqyMtfof5T4NMH1gJeDQ31AfoR4wapYPBQWlbZQKKPkuUBWoqgwA1GsuHW.1lTg59tyfrwvC/::0:99999:7:::
账号名称:密码信息:上次修改密码的时间:密码最短有效天数:密码最长有效天数:提前7天警告密码将过期:密码过期后多少天内禁用此用户:账号失效时间:保留字段
详细解释
密码信息:MD5加密的密码字串信息;为*或!!时,被锁定,不能登陆;为空,无密码。
上次修改密码的时间:表示从1970年1月1日到最近一次修改密码那天所间隔的天数。
密码最短有效天数:修改密码后,最少经过多少天才能再次修改密码。默认为0,不限制。
密码最长有效天数:修改密码后,经过该天数,必须再次修改密码。默认为99999,不限制。
提前7天警告密码将过期:默认值为7。
账号失效时间:指定用户账号作废的天数,从1970年1月1日起计算。
chage 选项 登录
选项
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays MAX_DAYS set maximum number of days before password
change to MAX_DAYS
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
组分类
基本组(私有组):伴随用户的创建而创建,与用户同名。用户只能属于一个基本组,在/etc/passwd中查看。
附加组(公共组):用户可属于多个附加组,在/etc/group中查看。
/etc/group:包含组的基本信息
/etc/gshadow:包含组的密码信息
1.查询root组包含哪些用户
[root@localhost ~]# grep "^root" /etc/group
root:x:0:
2.查询那些组包含root用户
[root@localhost ~]# grep "root" /etc/group
root:x:0:
UID 和 GID
UID:用户识别号
用户 UID 范围
root 0
程序用户 1 ~ 999
普通用户 1000 ~ 60000
GID:组识别号
管理组账号
组账号管理
useradd #添加用户账号
选项
-u:指定UID
-d:指定家目录位置
-e:指定账户失效时间,YYYY-MM-DD或天数。
-g:指定基本组名称或GID
-G:指定附加组
-M:不创建宿主目录
-s:指定用户的登陆shell,/bin/bash可登录,/sbin/nologin不可登录。
案例
useradd -e 2020-01-01 -s /sbin/nologin bui
创建一个到2020年1月一号名为bui普通用户
passwd#设置、更改密码
选项
-d:清空账户密码
-l:锁定账户
-S:查看账户状态
-u:解锁账户
案例
echo "000000" | passwd --stdin 用户
修改用户密码为000000
usermod#修改账户属性,参数类似useradd
选项
-u:修改用户UID
-d:修改家目录位置
-e:修改账号失效时间
-s:指定用户的登陆shell
-l:更改用户登陆名称
-L:锁定账户
-U:解锁账户
-g:修改用户的基本组(或GID)
-G:修改用户的附加组(或GID)
userdel#删除用户账号
-r:同时删除家目录
groupadd#添加组账号
-g:指定GID
gpasswd#添加、设置、删除组成员
选项
-a:添加组成员
-d:删除组成员
-M:指定组成员,多个以,分隔,会覆盖原有的。
案例
[root@localhost ~]# useradd ftp1
[root@localhost ~]# useradd ftp2
[root@localhost ~]# useradd ftp3
[root@localhost ~]# useradd ftp4
[root@localhost ~]# useradd ftp5
[root@localhost ~]# echo "000000" | passwd --stdin ftp1
Changing password for user ftp1.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp2
Changing password for user ftp2.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp3
Changing password for user ftp3.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp4
Changing password for user ftp4.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp5
Changing password for user ftp5.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# gpasswd -a ftp1 ftpusers
Adding user ftp1 to group ftpusers
[root@localhost ~]# gpasswd -a ftp2 ftpusers
Adding user ftp2 to group ftpusers
[root@localhost ~]# groups ftp1
ftp1 : ftp1 ftpusers
[root@localhost ~]# groups ftp2
ftp2 : ftp2 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp1,ftp2
[root@localhost ~]# gpasswd -M ftp3,ftp4,ftp5 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp3,ftp4,ftp5
groupdel#删除组账号
查询账号信息
id#查询用户账号的身份标识
groups#查询用户账号所属的组
finger#查询用户账号的登陆属性
需要安装:yum install finger -y
w、who、users#查询当前主机的用户登陆情况
last#查询最近登陆的用户信息
文件、目录权限及归属
概述
[root@promote ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 846 Aug 16 17:15 /etc/passwd
-:文件类型,-普通文件、d目录、b块设备文件、c字符设备文件、l链接文件。
rw-:User,属主用户对文件的访问权限。
r--:Group,属组内成员对文件的访问权限。
r--:Other,其他用户对文件的访问权限。
.:与SELinux有关
root:文件属主
root:文件属组
chmod#设置文件、目录权限
chmod [ugoa] [+-=] [rwx] 文件或目录
ugoa:u宿主,g属组,o其他用户,a所有用户。
+-=:+增加权限,-减少权限,=设置对应的权限。
rwx:r读,w写,x执行。
案例
[root@localhost ~]# ls -l test.txt
-rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
[root@localhost ~]# chmod g+w,o+w test.txt
[root@localhost ~]# ls -l test.txt
-rw-rw-rw-. 1 root root 0 Aug 20 18:19 test.txt
chown#设置文件、目录的归属
chown [选项] [属主][:[属组]] 文件或目录
-R:递归修改
准备工作
[root@localhost ~]# mkdir /opt/test
[root@localhost ~]# touch /opt/test/test{1,2}.txt
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo "000000" | passwd --stdin zhangsan
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
实践
[root@localhost ~]# chown -R zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R :zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan zhangsan 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R root:root /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
umask应用
umask#指定用户在新建文件或目录时的权限默认值,指默认值需要减掉的权限。777-022=755,666-022=644。
默认:umask 022
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南