内容摘要
一、用户配置文件和密码配置文件
- 以冒号为分隔第一段为用户名称,第二段为用户密码(隐藏状态),第三段为用户的UID,第四段为GID,第五段为用户的注释信息,第六段为用户的家目录,第六段为用户的shell(默认bin/bash可登陆,不可登陆/sbin/nologin)
- 在/etc/shadow文件中保存了用户密码,它与配置文件是一一对应的。
- 以冒号为分隔,第一段为用户名,第二段为用户密码(加密的字符串,无法编译成正常的密码),第三段为最近一次更改密码距离1970年1月1日的天数,第四段为多少天后才能更改密码,第五段为多少天后必须更改密码,第六段为密码到期前的某一天提醒用户,第七段为密码失效多少天后锁定账号,第八段为账号的有效期,第九段为保留字段没有实际意义。
- 相同的密码,产生的加密字符串是不一样的。
二、用户组管理
- 命令groupadd -g+数字 可以给用户组设置gid(添加gid时需大于1000),不适用-g选项时,则为系统默认的gid)。
- 命令groupdel 可以删除用户组(必须要先删除组下的用户后才能删除组。)
- 自定义的GID和UID一般为1000以上(1000以内为系统预留)
- 只有当用户组没有用户时才能删除这个用户组
三、用户管理
- 命令useradd+-u+-g,可以分别为新建用户指定uid和gid。例:useradd -u 1001 -g 1002 user1 创建一个user1的新用户,指定UID为1001,GID为1002
- 选项-d 表示为用户自定义家目录。例:useradd -d /tmp/user1 user1 创建新用户user1,并在目录tmp下生成一个该用户的家目录。
- 选项-s+/sbin/nologin 设定用户不能登陆(默认为/bin/bash)。
- 选项-M 创建用户时,不创建家目录。(用户依然还是有家目录的,只是没有创建)
- 命令userdel 删除用户的命令(不会删除用户的家目录),-r选项可以在删除用户时同时删除用户家目录。
- 选项-G 为用户添加扩展组。
- 命令adduser一样可以创建用户。
四、usermod的使用
- 选项-u 更改用户的UID。例:usermod -u 1000 zhaoyujie 将用户zhaoyujie的UID更改为1000。
- 选项-g 更改用户的GID(只能指定一个已存在的组,且最多一个)。例:usermod -g 1000 zhaoyujie 将用户zhaoyujie的用户组更改为1000。
- 选项-G 为用户增加扩展组,在使用,分割时可以同时扩展多个组。例:
- 选项-d 表示为用户自定义家目录。
- 选项-s 指定用户的shell,默认为/bin/bash,可以设定为/sbin/nologin 禁止登陆。例:usermod -s /bin/bash zhaoyujie 解除zhaoyujie用户禁止登陆。
- 选项-L 锁定用户
- 选项-U 解锁用户
- 命令id查看用户的uid和gid等信息
五、用户密码管理
- 命令passwd更改对应用户的密码
- 命令passwd -l 锁定用户密码,锁定的用户密码,会在/etc/shadow的第二段密码前加注!!
- 命令passwd -u 解锁用户密码
- 命令passwd --stdin 更改用户密码时,可以只输入一次并明文显示密码。
- 命令echo “111222” |passwd --ssdin 用户名,“|”可以将前面的命令输出的结果传递给后面的命令,使得passwd修改密码直接成功。
- 命令echo -e “11112222\n11112222" |passwd 用户名, 可以生成一个换行的结果直接修改密码。(-t可以分割输出结果)
六、命令mkpasswd 生成密码工具
使用mkpasswd前需要先安装 yum install -y expect工具
七、命令su 切换用户
- 命令su - 可以切换至指定用户及用户环境。
- 使用id命令可以查询当前用户及信息。
- 命令su也可以切换到指定用户但不会切换当前的环境。
- 使用 su - -c “命令” +用户名 可以使用指定用户名权限执行命令。如图:在root用户下,使用shenxinyu创建1.txt文件。
- ls -la /etc/skel/ 在该文件下有家目录文件的模板。
- 使用mkdir 在/home/目录下创建家目录(家目录为用户名称)
- 使用cp命令将/etc/skel/下的模板复制到新建的用户家目录下。
- 使用chown - R命令更改用户家目录及目录下子文件的所属用户和所属组。
八、命令sudo
sudo可以使一个普通用户拥有root用户的权限去执行一些指定命令。
- 命令sudo+指定命令 使用配置文件中添加给普通用户的指定命令
- 命令visudo可以查看sudo的配置文件,在修改后并会检测错误(vi sudo则不会提示)。
- 在vi下使用:set nu可以显示文件的序列号。
- 在该位置可以添加指定命令(root权限)给普通用户使用,必须使用绝对路径并用逗号和空格分割。如图:
九、限制root用户远程登录
- 使用vi /etc/ssh/sshd_config 中将Root用户远程登录改为no(使用/Root搜索,并将#去除,修改为no后保存退出),然后使用 systemctl restart sshd.service重启服务。
十、chattr相关扩展
十一、特殊权限扩展
- 特殊权限suid:使普通用户暂时获取文件拥有者root的权限,suid仅可用在二进制文件(binary file),而且对目录无效。(二进制文件:可执行的文件)
- 特殊权限sgid:可以应用在文件上同样可以作用在目录上,若目录被设置这个权限后,任何用户在此目录下创建的文件或者目录都具有和该目录所属组相同的组。
- 文件:如果SGID设置在二进制文件上,无论用户是谁,在执行该程序的时候,它的有效用户组将会变成该程序的用户组所有者。
- 目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组。
- 特殊权限SBit一般用于目录上,对文件的意义不大。SBit对目录的作用是:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权利删除。SBit可以理解为防删除位、粘滞位(Sticky bit),或粘着位,是Unix文件系统权限的一个旗标。
十二、软连接和硬链接
- 理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
- inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。当inode使用完时可以把文件挪走 然后重新格式化 格式化的时候 指定inode的比例 让它多分一些 再把文件挪回来,或删除无用的文件释放出inode。
- 一般情况下,文件名和inode号码是"一 一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
- 文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。
- 硬链接:其实就是同一个文件具有多个别名,具有相同inode,而dentry不同。
- 文件具有相同的inode和data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建
- 不能对目录进行创建,只能对文件创建硬链接
- 删除一个硬链接并不影响其他具有相同inode号的文件;
- 软链接有自己的文件属性及权限等;
- 软链接可以对不存在的文件或目录创建;
- 软链接可以交叉文件系统;
- 软链接可以对文件或目录创建;
- 创建软链接时,链接计数i_nlink不会增加;
- 删除软链接不会影响被指向的文件,但若指向的原文件被删除,则成死链接,但重新创建指向 的路径即可恢复为正常的软链接,只是源文件的内容可能变了。
十三、find命令的扩展
- 查找/data/目录权限为755的文件或者目录:find /data/ -perm 755
- 文件权限在644以上: find /data/ -perm +644
- 与-perm 777相同,表示所有权限: find /data/ -perm -007
- 按文件更改时间来查找文件,-n指n天以内,+n指n天以前: -mtime -n +n
- 按文件访问时间来查: -atime -n +n
- 按文件创建时间来查找文件,-n指n天以内,+n指n天以前: -ctime -n +n
- 查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录:find /data/ -name "*.log" –type f -size +10k -exec cp {} /tmp/ /;
- 查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件:find /data/ -name "*.log" –type f -size +10k -m perm 644 -exec rm –rf {} /;
- 查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录:find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ /;