Linux基础学习笔记整理
第三章 Linux账号管理与ACL权限设置
用户和组帐号概述
Linux基于用户身份对资源访问进行控制
用户帐号:
超级用户root
普通用户
程序用户
超级用户,即root用户,类似于Windows系统中的Administrator用户,
非执行管理任务时不建议使用root用户登录系统
普通用户帐号一般只在用户自己的宿主目录中有完全权限
程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。
例如:bin、daemon、ftp、mail等
组帐号:
基本组(私有组) 为了权限独立
附加组(公共组)
UID和GID:
UID(User Identity,用户标识号)root uid 固定为0 Gid 0
GID(Group Identify,组标识号)
1~499的UID、GID默认保留给程序用户使用,
普通用户/组使用的UID、GID号在1000~65535之间
用户帐号文件
用于保存用户的帐号基本信息
文件位置:/etc/passwd (每一行对应一个用户的帐号记录)
[root@localhost ~]# tail -2 /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
lu:x:500:500:kgc Student User:/home/lu:/bin/bash
字段1:用户帐号的名称
字段2:用户密码字串或者密码占位符“x”
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息
(每个字段用“:”隔开)
用于保存密码字串、密码有效期等信息
文件位置:/etc/shadow 读取文件/etc/login.defs
(设置用户帐号限制的文件。该文件里的配置对root用户无效。)
(每一行对应一个用户的密码记录)
[root@localhost ~]# tail -2 /etc/shadow
sabayon:!!:14495:0:99999:7:::
lu:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:14495:0:99999:7:::
字段1:用户帐号的名称
字段2:加密的密码字串信息(空密码=::; 账号被锁=:*:; 密码过期=:!!:)
字段3:上次修改密码的时间(距1970年01月01日的天数为14495)
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空(表示在距1970年01月01日后几天过期)
字段9:保留字段(未使用)
添加用户帐号
useradd命令 adduser
useradd [选项]... 用户名
-u:指定 UID 标记号,直接指定一个特定的UID给这个账号
-d:指定宿主目录,缺省为 /home/用户名,必须使用绝对路径
-e:指定帐号失效时间,格式为YYYY-MM-DD
-g:指定用户的基本组名 GID
-G:指定用户的附加组名
-M:不为用户建立并初始化宿主目录,强制!不要创建用户主文件夹
-s:指定用户的登录Shell,若没有,则默认是/bin/bash
用户帐号的初始配置文件
新建用户帐号时,从 /etc/skel 目录中复制而来
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
设置/更改用户密码
passwd命令
passwd [选项]... 用户名
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号,lock,使密码失效
-S:查看用户帐号的状态(是否被锁定) status
-u:解锁用户帐号,unlock解锁账号
修改用户帐号的属性
usermod命令
usermod [选项]... 用户名
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
userdel命令
userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
groupadd命令
groupadd [-g GID] 组帐号名
gpasswd命令
设置组帐号密码(极少用)、添加/删除组成员
gpasswd [选项]... 组帐号名
-A:将这个组的主动权交给这个用户来管理
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
(使用“-M”选项时可以为指定组帐号定义成员列表(注意:会覆盖原有组成员),
需要添加多个用户到指定的组中时非常方便。组内的管理员只能删除不能添加。)
groupdel命令
删除组
groupdel 组账号名
用户和组帐号查询
id 命令
查询用户身份标识
id 用户名
groups命令
查询用户所属的组
groups 用户名
finger命令
查询用户账号的详细信息
finger [-l] 用户名
user、w、who命令
查询已登录到主机的用户信息
文件/目录的权限和归属
访问权限
读取:允许查看文件内容、显示目录列表
写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行:允许运行程序、切换目录(节点表内的权限)
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账号
查看权限和归属
使用ls -l 命令进行查看权限
设置权限
chmod命令
chmod [ugoa] [+-=] [rxw] 文件或目录
chmod nnn 文件或目录
(cdmod 755 a.txt)
设置归属
chown 用户名:组名 文件路径
用来更改某个目录或文件的用户名和用户组
chown one:root a.txt
chown -R root:root /tmp/tmp1
(-R把tmp下tmp1下的所有文件的属主和属组都改为root)
使用附加权限
set位权限
为可执行(有 x 权限的)文件设置,权限字符为“s”
其他用户执行该文件时,将拥有属主或属组用户的权限
SUID:表示对属主用户增加SET位权限
SGID:表示对属组内的用户增加SET位权限应用
示例:/usr/bin/passwd /usr/bin/ping
粘滞位权限
为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件
设置SET位、粘滞位权限
使用权限字符
chmod ug±s 可执行文件...
chmod o±t 目录名...
使用权限数字:
chmod mnnn 可执行文件...
m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加
如“4755”表示设置SUID权限、“6755”表示同时设置SUID、SGID权限
设置setfacl权限
setfacl –m u:apache:rwx file //设置apache用户对file文件的rwx权限
setfacl –m g:market:rwx file //设置market用户组对file文件的rwx权限
setfacl –x g:market file //删除market组对file文件的所有权限
setfacl –x u:market file //删除用户对file文件的所有权限
getfacl file //查看file文件的权限