1.管理用户组
RHEL系统中普通用户和组的ID默认从500开始,0~499作为系统保留。
2.命令行管理用户
1)使用useradd创建用户
用法:useradd [options] user_name
-u UID:为新用户指定一个uid(不使用系统默认按顺序分配),使用-r强制简历系统用户,-o允许新用户不唯一的uid
-g Group:为新用户指定一个组(指定组必须存在)
-G Goups:为新用户指定一个附加组
-M 不创建用户的家目录
-m 为新用户创建家目录,使用-k选项将skeleton——dir内的档案复制到家目录下
-c 为新用户进行说明注释(/etc/passwd的说明栏)
-d 为新用户指定家目录,默认值为default_home内的login
-s 为新用户指定登录后使用的shell
-e 为新用户指定帐号的终止日期,日期格式为MM/DD/YY
-f 用户帐号过期几日后永久失效,当值为0时帐号则立刻失效,为-1时关闭此功能,默认关闭
例子:
useradd -u 1000 -c "ftp user" -s /bin/nologin user1
2)使用passwd设置用户密码
用法:passwd [options] user_name
常用选项:
-l 锁定指定密码
-u 解锁指定的被锁定的帐号
-n 指定密码最短时间
-x 指定密码最长时间
-w 指定密码过期前的警告天数
-i 指定密码过期后,帐号失效前的天数
-s 报告指定用户密码的状态
--stdin 从标准输入读入密码,常用于shell脚本
例子:
passwd user1
用cat命令查看:
cat /etc/passwd
查看用户密码信息新行:
cat /etc/shadow
3)用usermod命令修改用户帐号信息:
用法:usermod [options] user_name
-L 锁定帐号(在/etc/passwd中密码部分前加一个!)
-U 用于解锁
-l 改变用户的登录名
例子:
usermod -c "web user" user1
cat /etc/passwd |grep user1
查看用户的密码文件,在密码前加“!”符号,用户不能登录
grep user1 /etc/passwd
4)使用userdel命令删除用户
用法:userdel [options] user_name
-f 强制删除用户,即使该用户仍在登录
-r 删除用户的同时删除该用户的家目录和邮件
例子:
userdel user1
ls /home
没有-r选项删除用户,而用户的家目录被保留,如果同名组没有其他成员,则连同删除,反之,保留。
5)使用groupadd命令新建组
用法:groupadd [options] group_name
-g 指定新建组的gid
-o 可以重复使用gid
-r 建立系统帐号
例子:创建一个新组
groupadd nona
修改nona密码:(没有密码的组是不允许用户申请加入的)
gpasswd nona
查看当前组群:
groups
用户主动申请加组群nona
newgrp nona
用户退出组群:exit
删除组nona的密码:gpasswd -r nona
在root用户下,将用户zhangsan加入到nona组中
gpasswd -a zhangsan nona
将lisi设置为组nona的管理员
gpasswd -A lisi nona
切换组:
newgrp nona(在zhangsan用户下)
修改组名,将nona名改为xs:
groupmod -n nona xs
删除组:
groupdel xs
查看user1的uid,gid,组:
id user1
查看用户的帐号密码信息:
change -l user1
设置用户user1帐号过期时间是2018-05-28:
change -E "2018-05-28" user1
检查系统内用户帐号信息的完整性:
pwck (输出中系统帐号家目录信息的缺失是正常的)
6)sudo命令获得root权限
使用visudo命令编辑sudo配置文件
visudo /etc/sudoers
3.用户初始化
1)用户特定配置文件
当用户被创建时,系统从/etc/skel/目录下复制用户的配置文件到用户的目录。这些配置文件用来定义用户的工作环境,比如:PATH,别名,这些文件位于每个用户的家目录下,仅对当前用户有效。
~/.bashrc 定义函数和别名
~/bash_profile 设置环境变量
~/.bash_logout 定义用户退出时执行的命令
(可将别名定义在bashrc文件中)
全局配置文件:(对所有用户都生效)
/etc/bashrc 定义函数和别名
/etc/profile 设置环境变量
/etc/profile.d 目录下的脚本被/etc/profile引用
系统预设的值:
用户属性信息的默认值在文件/etc/login.defs中被定义
例子:查看/etc/login.defs,使用grep命令过滤文件以“#”开头的注释行
grep -v '^#' /etc/login.defs
查看/etc/default/useradd文件中的配置项
cat /etc/default/useradd
使用useradd命令列出系统预设的添加用户信息的默认值
useradd -D
可以通过useradd -D加上相应的选项更新这些预设值
-b 定义用户家目录的上一级目录
-e 用户帐号的过期日期
-f 用户帐号过期几日后失效
-g 新建用户的起始群组或ID
-s 新建用户登录后使用的shell
4.Linux文件权限管理
注意:用户权限高于组的权限,高于其他人的权限
权限
对文件影响
对目录影响
r(读取)
可以读文件内容
可以列出目录的内容
w(写入)
可以更改文件内容
可以创建或删除目录中任意文件
x (执行)
可以作为执行文件
可以访问目录内容(还取决于目录文件的权限)
在命令行中列出目录的属性 :
ll -d /home/demo
查看文件目录有多大:
du -sh /root
1)在命令行中管理权限
使用chmod命令更改文件的权限
用法:
chmod [options] [模式] file...
chmod [options] 八进制模式 file...
chmod [options] --referrence=参考文件 file...
常用选项
-R:以递归方式更改所有的文件及子目录
符号模式:chmod who what which file|girectory
简单理解:chmod [-R] [ugoa] [+-=] [rwx] file|firectory
who:指u、a、g、o(代表拥有者,全部,组,其他)
what:值+、-、=(代表添加,删除,精确设置)
which:r、w、x(代表读取,写入,可执行)
八进制模式:chmod [-R] ### file|diretory
###代表数字,#代表权限总和 r=4,w=2,x=1
精确设置文件的权限:chmod u=rw,g=r file
统一设置目录及目录下所有文件的权限:chmod -R +w targetdir/
使用数字方式设置权限:chmod 755 file
2)chown命令更改文件用户所有权
更改文件或者文件夹的用户或组的所有权,使用chown或chgrp命令
用法:
chown [options] [所属者]:[所属组] file
chown [options] --reference=参考文件 file
例子:
改变文件的所属者:
chown zhangsan file
改变文件的所属组:
chgrp mail file
同时改变用户和组的所有权,并使用-R选项递归目录和目录下的所有文件:
chown zhangsan:mail targetdir/
3) 特殊权限
查看passwd的权限
ll 'which passwd'
特殊权限对文件和目录的影响
特权
对文件的影响
对目录的影响
u+s(setuid或suid)
以拥有文件和目录的用户身份执行文件,而不是运行文件的用户身份
无影响
g+s(setgid或sgid)
以拥有文件的组身份执行文件
对目录中最新创建的文件将其组所有者设置为与目录的组所有者相同
o+t(sticky)
无影响
对目录具有写入权限的用户仅可以删除其拥有的文件,而无法删除其他用户所拥有的文件
设置特殊权限有两种方法:
符号法:setuid=u+s;setgid=g+s;sticky=o+t
数字法:setuid=4;setgid=2;sticky=1
例子:给目录设置sgid权限
chmod u+s directory
chmod 2775 directory
搜索所有异常的程序或脚本
find / -perm -4000
4.扩展属性
lsattr testfile.txt 查看文件的扩展属性
1)设置文件的扩展属性:
chattr +i testfile.txt
lsattr testfile.txt
s:系统删除这个文件时,用o填充文件区域
a:只允许追加数据,不允许覆盖或截断这个文件
i:表示不能被删除,不能修改,不能重复命名,不能创建链接
S:表示同部数据
d:在文件备份时,dump程序忽略这个文件,通过man chattr获得说明
c:以透明方式压缩这个文件
u:当一个程序要删除这个文件时,系统会保留其数据块以使恢复
A:告诉系统不要修改对这个文件的最后访问时间
2)访问控制列表(ACL)
查看文件或目录的acl权限
用法:getfacl [options] file
例子:查看文件的acl
getfacl testfile
对于添加ACL的文件,使用ll命令列出,权限位的最后带有“+”号
ll testfile
3)设置文件或目录的ACL
用法:
setfacl [-bkndRLP] {-m|-M|-x|-X|...} file
常用选项:
-m:设置或修改文件的ACL权限
-x:删除文件的一个ACL权限
-b:删除文件所有的ACL权限
-k:删除所有的默认ACL权限
--set:设置文件ACL,替代当前的ACL
--mask:重新计算有效的mask值
-R:递归子目录
-d:设置默认的ACL权限,仅能针对目录使用
--restore:从文件恢复备份的ACL
例子:查看和设置ACL
针对用户zhangsan来设置rwx
setfacl -m u:zhangsan:rwx acltest.file
针对组nona来设置rw
setfacl -m g:nona:rw acltest.file
设置限制的权限为r
setfacl -m m:r acltest.file (mask为限制权限)
查看当前的ACL
getfacl acltest.file
设置ACL权限,如果同时设置多个权限,权限之间使用“,”分隔,同时设置多个ACL用户和组的权限:
setfacl -m u:user1:rwx,u:user2:rw,u:user3:r,g:nona:rw testfile
删除ACL权限
setfacl -x g:zhangsan acltest.file
一次性删除所有ACL的权限
setfacl -b acltest.file
设置目录默认的ACL
setfacl -d -m g:nona:rwx testdir/
4)备份和恢复ACL
主要文件操作命令cp和mv都支持备份时保留文件的acl,cp命令需要加上-p参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息的。--restore选项来恢复文件中保存的ACL。
例子:
查看目录及其所有子目录和文件当前的ACL信息
getfacl -R testdir/
备份目录及其子目录中文件的ACL
getfacl -R testdir/ > testdir.acl
删除原文件所有ACL
setfacl -R -b testdir/
恢复被删除的ACL信息
setfacl --restore testdir.acl
5.SELINUX
Selinux状态有三种:启用模式(enforcing),宽容模式(permissive),禁用模式(disabled)。
查看当前selinux的状态:
getenforce
宽容模式设置:
setenforce 0
恢复selinux状态 :
setenfroce 1
getenforce
永久禁用selinux:
vim /etc/selinux/config
将SElinux=enforcing改为 SElinux=disabled
重启系统使其生效。