Linux目录结构以及目录结构命名规定
FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。因为 Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。FHS文件系统结构标准化所有系统版本都一样。
在Linux中,所有的文件与目录都由根目录/ 开始。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树状。因此,我们也称这种目录配置方式为:“目录树(directory tree)”
/bin(binary二进制) 用户可执行的二进制程序,所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/boot引导文件存放此处,内核文件,引导加载器(BootLoader,grub)都存放此处
/dev/sda(硬盘)/dev/sr0/(光盘)
/dev/zero/非物理逻辑设备
/dev/null/ 黑洞
/dev/random/生成随机数
/etc存放非常重要的配置文件
/home用户数据家目录
/root 管理员的家目录
/run运行中生成的相关数据 centos6/var/run
/sbin 系统管理员常用的工具,管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64 专用于x86_64系统上的辅助共享库文件存放位置
/tmp临时数据
/usr大部数据储存在此
/var 可变内容 (如log,缓存数据,系统变化数据,外部页面html)
以上标准目录
/opt /srv 存放用户数据
/selinux CenOS6
/proc process进程,虚假目录不再硬盘上。放置正在执行的程序信息
/sys 放置系统硬件信息
显示/etc目录下,所有以.d结尾的文件或目录
ls -ad /etc/*.d
参数-a 显示隐藏文件 参数-d收起目录下的信息只显示目录本身
显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
ls -ad /etc/[mnrp]*.conf
参数-a 显示隐藏文件 参数-d收起目录下的信息只显示目录本身 使用[mnrp]*通配符来匹配查找文件名
创建/app/rootdir目录,并复制/root下所有文件到该目录内, 要求保留原有权限】
1.mkdir /app/rootdir
2.cp -rp /root/.*[^.] /app/rootdir
建立目录后,-r递归 -p保存权限 通配符.*所有文件及隐藏文件 ^.不包含. 父目录。
使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
1.mkdir -p a{1/{a,b},2}
参数-p 自动建立未有的上级目录
2.mkdir /tmp/{x,q}{_y,_z}
总结用户、用户组管理命令并演示命令以及常见用法
用户和组管理命令
用户管理命令
添加新用户默认策略 /etc/default/useradd
useradd -D 显示此默认策略文件
-s SHELL
-b BASE_DIR
-g GROUP
SKEL=/etc/skel(默认新建/home模板)
CMD [username] 默认选项添加用户,口令为空且被禁用,无法登陆
useradd 添加用户
-u 指定UID
-o 忽略UID唯一性
-c 用户的注释信息
-d 指定家目录
-r 设为系统账号,指定给某应用,默认不生成home
-s 指定shell类型 (系统账号一般指定为/sbin/nologin,不允许登录)
-g [groupname] 指定主组
-N 指定默认策略为主组 (/etc/default/useradd --GROUP=GID )
-G [groupname] 指定附加组
-m 强制生成家目录,用于系统用户
-M 不创建家目录,用于普通用户
newusers psaawd格式文件 批量创建用户
usermod 修改用户
-u UID 新UID
-g GID新主组
-G [GROUP1[,GROUP2..[,GROUPN]]]
-a 不覆盖之前附加组并追加新附加组
清除附加组。1加自己主组。2'' ''加空组
-s SHELL 新的默认SHELL
-c 'COMMENT'新的注释信息
-d HOME 新家目录不会自动创建;
-m若要创建新家目录并移动原家数据,同时使用
-l login_name 新的名字
-L [username] 锁定用户口令并禁用 增加密码栏!
-U [username] 解锁用户口令并取消禁用拿掉!(新建用户禁用口令无法解除)
-e YYYY-MM-DD 指定账户过期日期
-f INACTIVE 设定宽容期限
userdel 删除用户
-r 并删除家目录
查看用户相关的ID信息
id [OPTION]...[USERNAME]
-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合[ugG]使用
切换用户(switch user)或以其他用户身份执行命令
su [options...][-][user[args]]
su [username] 非完全切换用户,当前目录不变
su - [username] 完全切换用户。回到家目录
su - root -c 'COMMAND' 在普通用户环境下,以root身份执行命令
su -l username 相当于 su - username
设置密码
passwd [OPTIONS] Username :修改指定用户的密码
-d 删除指定用户的密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登录修改密码
-f 强制操作
-n mindays 指定最短使用日期
-x maxdays 最大使用日期
-w warndays 提前多少天开始警告
-i inactivedays 非活动期限
--stdin 从标准输入接收用户密码
echo magedu | passwd --stdin 快速修改用户口令
chpasswd [username]:[token] 使用管道批量修改用户口令
openssl rand -base64 12 随机生成12位数字
组账号维护命令
groupadd [OPTION]... group_name
-g GID 指明GID号;[GID_MIN,GID+MAX]
-r 创建系统组
Centos6:ID<500
Centos7:ID<1000
groupmod修改组属性
-n group_name 新名字
-g GID 新的GID
groupdel删除组
groupdel GROUP 主组不允许删除,附加组可以删除
更改组密码
gpasswd [OPTION] group
gpasswd [groupname] 组加口令
-r user组去口令
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
newgrp [groupname] 普通用户自己加组(必须有组口令)后,原主组变为附加组,加入组变为主组(临时性加组)
更改和查看组成员
groupmems [options] [action]
options:
-g,--group groupname 更改为指定组(只有root)
Actions:
-a,--add username 指定用户加入组
-d,--delete username 从组中删除用户
-p,--purge 从组中清除所有成员
-l,--list 显示组成员列表
groups [option].[username]...查看用户所属组列表
例如:
groupmems -a [username] -g [groupname]
groupmems -d [username] -g [groupname]
getent group [groupname] root用户出组
修改用户密码策略
chage [OPTION]...LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAY
-W --warndays WARN_DAYS
-l 显示密码策略 口令默认策略 /etc/login.defs 文件
例如:
chage -d0 立即修改密码
chage -m 0 -M 42 -W 14 -I 7 tom
chage -E 2016-09-10 tom
authconfig --passalgo=sha256 --update 加密算法更改,只影响新更改口令
用户相关其他命令
chfn 指定修改用户信息
chsh 指定修改用户shell
finger工具查看用户全部信息(需要安装)
文件权限分为三种:读、写、执行
file permission : r read(文本文件适合)、w write(文本文件适合)、x excute(二进制执行程序,脚本合适) 适合的人为设置权限。
权限的表现
前三位所有者。中间三位为组成员。后三位为其他人
更改权限
模式法设置权限
chmod who opt per file
who:u 所有者、g 用户组、o 其他人、 a所有人
opt:+增加权限 -去掉权限 =直接赋予
per:r 读 w写 x执行 X有执行权限的增加其他用户执行权限,没有执行权限的依旧不会有权限
例如:
chmod o+w f1
对于目录
r read 可浏览文件列表 w write 可新建删除文件 x excute 访问目录里的文件
一般权限rx都给,如不给进入权限,rx都不给
没有x执行权限 等于没有所有权限
-R 递归修改权限 (如果增加执行权限会也加在文本上,不安全)
--reference 被参考目标 新建目标 (参考权限复制 )
数字法权限设置
chmod 数字 file
例如
rwxrw-r-- file
111 110 100
7 6 4
chmod 764 test
读4 写2 执行1 0没权限
奇数有执行权限,偶数没有执行权限
文件所有者修改
chown 所有者.所属组 文件名 (所有者. 文件名 所有者和组都修改)(.所属组 文件名只修改组)
chown mage.edu test chown .edu2 test
chown设置文件所有者
chown mage test
chgrp设置文件所属组
chgrp edu test
文件及文件夹默认权限设置
umask 掩码,有权限的位对应数值遮挡
umask+default=文件666|目录777
002+664/002+775
新建FILE权限:666-umask
如果所得结果某位存执行位(奇数)权限,则将其权限+1
更改umask
umask 数值 (永久储存 .bashrc)
文件系统上的特殊权限
SUID,SGID,Sticky(粘滞)
SUID 4 作用于二进制程序,当用户执行此文件,会继承此文件所有者的权限
添加S权限 chmod 4XXX [file] chmod u+s [file]
去掉权限 chmod XXX [file] chmod u-s XXX [file]
SGID 2 作用于二进制程序,当用户执行此文件,会继承此文件所属组的权限
添加权限 chmod 2XXX [file] chmod g+s [file]
去掉权限 chmod xxx [file] chmod g-s xxx [file]
SGID 2 作用于目录上,当用户在此目录建立的文件自动从此目录继承所属组
添加权限 chmod 2XXX [dir] chmod g+s [dir]
去掉权限 chmod xxx [dir] chmod g-s xxx [dir]
Sticky作用于目录
添加t权限 chmod 1XXX [file] chmod o+t [file]
去掉t权限 chmod XXX [file] chmod o-t [file]
增加sticky权限后允许读写目录下的文件不允许非所有者删除,只能删除自己的文件。
设定文件特定属性 attr属于文件扩展元数据,默认不显示
chattr可以用来禁止ROOT帐号做一些操作
+i [file] 禁止一切操作
-i [file] 取消禁止
+a [file] 可以增加,其他操作不允许
lsattr [查询扩展元数据]
访问控制列表
ACL:Access Control List 实现灵活的权限管理(确保系统可以适用ACL)
除了文件所有者,所数组和其他人。可以对更多用户设置权限
CentOS7默认创建的xfs和ext4文件系统具有ACL功能
CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需要手动增加
ACL生效顺序:所有者,自定义用户,自定义组,其他人
通过ACL赋予目录默认X权限,目录内文件也不会继承X权限
getracl file |directory 可以看到特殊权限 flags
getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2
setfacl
-m u:USERNAME:rwx file|directory 给文件或目录设置ACL自定义用户权限
-Rm g:GROUPNAME:rwx directory 递归设置目录ACL权限
-M file.ac file|directory 把ACL权限放入文本应用到文件或目录
-m g:GROUPNAME:rw file|directory 给文件或目录设置ACL自定义组权限
-m d:u:USERNAME:rx directory 设置参数d后,所有目录下子文件都默认继承ACL权限
-k directory 删除默认ACL权限
-x u:USERNAME file |directory 清除文件或目录的ACL权限
-X file.acl file|directory 删除ACL权限放入文本应用到文件或目录
-b file directory清空ACL权限
ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限)而非传统的组权限。它可以控制最大权限,限高线。
setfacl -m mask::rwx file
chmod g=rwx file 一旦设置了ACL权限位所属组自动变为mask
创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为 "Gentoo Distribution"
useradd gentoo -G bin,root -s /bin/csh -c "Gentoo Distribution"