一、用户与组
1、用户
管理员:root,UID为0
普通用户:1-60000 自动分配
系统用户:1-499,1-999(Centos7),对守护进程分配获取资源进行权限分配
登录用户:500+,1000+(Centos7),交互式登录
2、组
管理员组:root,GID为0
普通组:
系统组:1-499,1-999(Centos7)
普通组:500+,1000+(Centos7)
注意:用户必须属于一个且只有一个主组;一个用户可以属于0个或多个附加组
3、用户和组的主要配置文件
/etc/passwd:用户及其属性信息
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd文件的格式:
root:x:0:0::/root:/bin/bash
登录名:密码:UID:GID:用户全名或注释:家目录:shell
shadow文件的格式:
root:$1$TCVDVaiT$JC7TbKjvIZpIprdehWFH/1:15157:0:99999:7:::
第一字段:登录名
第二字段:用户密码
第三字段:密码最近一次的修改时间(从1970年1月1日起)
第四字段:密码再过几天可以被更改(0表示随时可以更改)
第五字段:密码再过几天必需被变更(99999表示永不过期)
第六字段:密码过期前几天系统提醒用户(默认为一周)
第七字段:密码过期几天后账号会被锁定
第八字段:从1970年1月1日算起,多少天后账号失效
第九字段:保留字段
group文件的格式:
root:x:0:root
组名称:组密码:GID:以当前组为附加组的用户列表
gshadow文件的格式:
root:::root
组名称:组密码:组管理员的列表:以当前组为附加组的用户列表
4、用户与组的管理命令
(1) useradd 用户创建
useradd [options] loginname
-u 指定用户的UID
-g 指定用户的GID
-o 配合 -u 选项,不检查UID的唯一性
-c "COMMENT" 用户的注释信息
-d HOME_DIR 以指定的路径为用户的家目录
-s SHELL 指定用户的默认shell,可用列表在 /etc/shells 文件中
-G GROUP1[,GROUP2...] 指定用户的附加组,组须事先存在
-N 不创建私有组为主组,使用 users 组作为主组
-r 创建系统用户
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
-D 显示与更改创建用户时的默认选项,如useradd -D -s SHELL,默认值的设定在文件 /etc/default/useradd 中
新建用户的相关文件:
/etc/default/useradd 新建用户时的一些默认选项
/etc/skel/* 新建用户的家目录中的默认生成的文件信息
/etc/login.defs 登录用户的一些选项设置
(2) userdel 用户删除
-r 删除用户同时删除家目录
(3) id 查看用户相关的ID信息
-u 显示UID
-g 显示GID
-G 显示用户所属的ID(包括主组与附加组)
-n 显示名称,配合ugG使用
(4) usermod 用户属性修改
usermod [options] loginname
-u UID 新UID
-g GID 新GID
-G GROUP1[,GROUP2...] 新附加组,原来的附加组会被覆盖,如要保留原有的,则要同时使用 -a 选项,表示追加
-s SHELL 新的默认SHELL
-c "COMMENT" 新的注释信息
-d HOME 新家目录不会自动创建,若要创建新家目录并移动原家数据,则同时使用 -m 选项
-l login_name 新的登录名
-L 锁定用户(在 /etc/shadow 文件密码栏填加 !)
-U 解锁用户
-e YYYY-MM-DD 指明用户账号的过期时间(用于修改 /etc/shadow 中第八字段信息)
-f INACTIVE 设定非活动期限(密码过期后的宽限时间)
(5) passwd 设置密码
-d 删除指定用户密码
-l 锁定用户
-u 解锁用户
-e 强制用户下次登录修改密码
-f 强制删除
-n mindays 指定用户密码最短使用期限
-x maxdays 指定用户密码最大使用期限
-w warndays 提前多少天开始警告
-i inactivedays 非活动期限(密码过期后的宽带天数)
--stdin 从标准输入接收用户密码
(6) chage 修改用户密码策略
-d last_day 修改上次密码修改时间
-E expire_date 修改密码过期时间
-I inactive 修改密码过期后的宽限天数,超过天数,帐号将不可用
-m min_days 修改密码最短使用时间
-M max_days 修改密码最长使用时间
-W warn_days 修改密码过期前的警告天数
-l 显示密码策略
示例:
chage -d 0 tom 下次登录强制修改密码
chage -m 0 -M 42 -W 14 -I 7
[root@linuxde ~]# chage -l root 最近一次密码修改时间 : 3月 12, 2013 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7
(7) su 切换用户或以其他用户身份执行命令
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
(8) groupadd 创建组
groupadd [OPTION]... group_name
-g GID 指明GID号
-r 创建系统组;CentOS 6: GID<500,CentOS 7 GID<1000
(9) groupdel 删除组
groupdel GROUP
(10) groupmod 组属性修改
-n group_name 指定新的组名
-g GID 指定新的GID
(11) gpasswd 更改组密码
gpasswd [OPTION] GROUP
-a user 将指定用户添加至指定组中
-d user 从指定组中移除某用户
-A user1,user2... 设置有管理权限的用户列表
(12) newgrp 临时切换主组
如果用户本不属于此组,则需要组密码
(13) groupmems 更改组成员
groupmems [options] [action]
optinos:
-g, --group groupname 更改为指定组 (只有root)
action:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
(14) groups 查看组成员
groups [OPTION] [USERNAME]... 查看用户所属组列表
二、权限相关
1、文件权限
(1) 文件属性
文件的权限主要针对三类对象用户定义:user,所有者,u;group,所属组,g;other,其他人,o;
每个文件针对每类访问者都定义了三种权限:r(读),w(写),x(执行)
权限对应的操作:
对于文件:
r:可使用文件查看类工具获取其内容
w:可以修改其内容
x:可以把此文件提给内核启动为一个进程
对于目录:
r:可以使用ls查看此目录中文件列表
w:可以在此目录中创建文件,也可删除此目录中的文件
x:可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限
(2) 文件相关命令
chown 修改文件的属主与属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R 递归
示例:
chown root file.txt 修改文件属主为root
chown root:root file.txt 修改文件属主为root属组也为root(冒号:也可以用点 . 代替)
chown :root file.txt 修改文件属组为root
chgrp 修改文件的属组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
chmod 文件权限操作
chmod [OPTION]... OCTAL-MODE FILE...
-R 递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限:u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- + -
chmod [OPTION]... --reference=RFILE FILE... 参考RFILE文件的权限,将FILE的修改为同RFILE
示例:
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
(3) umask值
umask值可以用来保留在创建文件的权限
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建目录的默认权限: 777-umask
非特权用户的umask为002,root用户的umask为022
umask # 设定umask的值 如 umask 002 或 umask u=rw,g=r,o=;全局设置:/etc/bashrc 或 ~/.bashrc
umask -S 模式方法显示umask值
umask -p 输出可被调用
[root@Centos7 ~]# umask -p umask 0027 [root@Centos7 ~]# umask -S u=rwx,g=rx,o=
(4) 文件系统上的特殊权限
SUID权限:只对二进制可执行程序有效,对目录设置无意义
权限设定:chmod u+s file 或 chmod 4xxx file
chmod u-s file
SGID权限:
对文件来说:只针对二进制可执行文件,当文件上有sgid时,不管任何人执行此文件的进程都属于文件的组
对目录来说:当目录上有sgid时,不管任何人在此目录中建立的文件都属于目录的所有组,但是用户还是创建的用户
权限设定:chmod g+s file 或 chmod 2xxx file
chmod g-s file
STICKY权限:只针对目录生效,当一个目录上有sticky权限时,那么这个目录中的文件只能被文件的所有者删除
权限设定:chmod o+t file 或 chmod 1xxx file
chmod o-t file
权限位映射:
SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
(5) 设定文件的特殊属性
chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
lsattr 显示特定属性
(6) 访问控制列表(ACL)
getfacl acl列表查看
setfacl -m 更改文件或目录的ACL规则
setfacl -x 删除文件或目录指定的ACL规则
示例:
setfacl -m u:wang:rw file
setfacl -m g:wang:rx file
setfacl -x u:wang file
setfacl -x g:wang file
setfacl -m d:u:student:rwx dir ACL默认权限,只针对目录设定
setfack -k dir 删除默认ACL权限
setfack -b file 清除所有ACL权限
mask值:在权限列表中mask表示能生效的权力值
[root@Centos7 mnt]# setfacl -m mask::r file1 [root@Centos7 mnt]# getfacl file1 # file: file1 # owner: root # group: root user::rw- user:testu1:rwx #effective:r-- group::r-- group:testg1:r-- mask::r-- other::r-- [root@Centos7 mnt]# ls -l file1 -rw-r--r--+ 1 root root 7 Dec 11 00:28 file1