CONTENTS
1 Linux文件管理
1.1 Linux目录结构
1.2 Linux文件类型
1.3 查看命令的类型
1.4 查看文件的详细属性
1.5 文件的一些基本操作
2 Linux用户管理
2.1 组的管理
2.2 用户的管理
2.3 sudo普通用户提权
3、文件权限管理
3.1 权限设置UGO
3.2 基本权限ACL
3.3 高级权限suid,sgid,sticky
3.4 进程掩码 mask umask
1 Linux文件管理
1.1 Linux目录结构
bin 普通用户使用的命令 /bin/ls, /bin/date
sbin 管理员使用的命令 /sbin/service
dev 设备文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero, /dev/null, /dev/random
root root用户的HOME
home 普通用户家Base目录
proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
usr 系统文件,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc 32bit
/usr/lib64 库文件Glibc 64bit
boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序)
etc 配置文件
系统相关如网络/etc/sysconfig/network /etc/hostname
应用相关配置文件如/etc/ssh/sshd_config...
lib 库文件Glibc
lib64 库文件Glibc
tmp 临时文件(全局可写:进程产生的临时文件)
var 存放的是一些变化文件,比如数据库,日志,邮件....
mysql: /var/lib/mysql
vsftpd: /var/ftp
mail: /var/spool/mail
cron: /var/spool/cron
log: /var/log
临时文件: /var/tmp(进程产生的临时文件)
==设备(主要指存储设备)挂载目录==
media 移动设备默认的挂载点
mnt 手工挂载设备的挂载点
misc automount进程挂载
net automount进程挂载
1.2 Linux文件类型
(1)方法一:
ls -l 文件名 //看第一个字符
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1
c 设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
(2)方法二
通过file命令查看文件类型
[root@centos8 ~]# file /etc
/etc: directory
[root@centos8 ~]# file /etc/host.conf
/etc/host.conf: ASCII text
1.3 查看命令的类型
type 查看命令类型,例如该命令是alias,还是内置命令,还是某个文件,还是关键字
[root@centos8 ~]# type ll
ll is aliased to `ls -l --color=auto'
[root@centos8 ~]# type mkdir
mkdir is hashed (/usr/bin/mkdir)
1.4 查看文件的详细属性
用stat命令,可以看到例如文件的名称,大小,权限,atime,ctime,mtime
[root@centos8 ~]# stat /etc
File: /etc
Size: 8192 Blocks: 24 IO Block: 4096 directory
Device: fd00h/64768dInode: 25165953 Links: 135
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2020-08-06 15:33:57.460174651 +0800
Modify: 2020-08-06 14:58:15.829138575 +0800
Change: 2020-08-06 14:58:15.829138575 +0800
Birth: -
1.5 文件的一些基本操作
创建文件用touch
创建目录用mkdir
cp复制文件,mv剪切文件,rm删除文件
用vi编辑文件,熟悉vi的用法,这边不做介绍,我之前博客都有介绍
cat查看文件。(还有less more tail head tailf等)
用grep针对文件进行过滤,例如:
[root@centos8 ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2 Linux用户管理
uid: 0 特权用户
uid: 1~499 系统用户
uid: 500+ 普通用户
groupadd,groupdel
useradd,usermod,userdel
passwd,chage
2.1 组的管理
groupadd hr
groupadd sale
groupadd it
groupadd fd
groupadd market
groupadd net01 -g 2000 #添加组net01,并指定gid 2000
grep 'net01' /etc/group #查看/etc/group中组net01信息
groupdel net01 #删除组net01
2.2 用户的管理
如果创建一个用户时,未指定任何组(主组或附加组),系统会创建一个和用户名相同的组作为用户的Primary Group.
(1)==创建用户 指定选项==
useradd user02 -u 503 #创建用户usr02,指定uid
useradd user03 -d /aaa #创建用户user03 指定家目录
useradd user05 -s /sbin/nologin #创建用户并指定shell
useradd user07 -G hr,it,fd #创建用户,指定附加组
useradd user10 -u 4000 -s /sbin/nologin #创建一用户不能登录shell
(2)==删除用户==
userdel user10 #删除用户user10,但不删除用户家目录和mail spool
userdel -r user2 #删除用户user2,同时删除用户家目录和mail spool
(3)==修改用户密码==
passwd alice #root可以给任何用户设置密码
echo "123455" |passwd --stdin alice #避免交互式
$ passwd #普通用户只能给自己修改密码,而且必须提供原密码
(4)usermod 修改用户,一般我们都是用usermod
usermod -G hr niuniu2 //覆盖原有的附加组
usermod -G fd,it niuniu2
usermod -aG hr niuniu2 //增加新的附加组
==其它选项管理==
usermod -s /sbin/nologin niuniu2
gpasswd -a jack wheel //usermod -aG hr zhuzhu
gpasswd -M zhuzhu,maomao100 hr
gpasswd -d zhuzhu hr
2.3 sudo普通用户提权
(1)切换root再执行命令,但需要root密码
(2)把用户添加到wheel组里,只用sudo执行命令
useradd demo -G wheel
sudo useradd gougou
(3)另外可以visudo编辑,根据需要进行改动。
3、文件权限管理
3.1 权限设置UGO
这个我也不做详细介绍了,列出我觉得重要的知识点。
(1)r、w、x权限对文件和目录的意义
对目录有w权限,可以在目录中创建新文件,可以删除目录中的文件(跟文件权限无关)
注意事项:
文件: x 权限小心给予
目录: w 权限小心给予
3.2 基本权限ACL
(1)ACL基本用法
#先创建文件做实验
touch /home/test.txt
ll /home/test.txt
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt
#获取文件ACL属性
getfacl /home/test.txt
#给用户Alice权限rw
setfacl -m u:alice:rw /home/test.txt
#Jack用户无权限
setfacl -m u:jack:- /home/test.txt
#其他用户无rw权限
setfacl -m o::rw /home/test.txt
#再次查看文件ACL属性
getfacl /home/test.txt
#给组hr读的权限
setfacl -m g:hr:r /home/test.txt
#删除组hr的acl权限
setfacl -x g:hr /home/test.txt
#删除所有acl权限
setfacl -b /home/test.txt
(2)ACL的高级特性
mask:
用于临时降低用户或组(除属主和其他人)的权限
mask决定了他们的最高权限
建议:为了方便管理文件权限,其他人的权限置为空
setfacl -m o::- /home/file100.txt //chmod o=- /home/file100.txt
setfacl -m m::--- /home/file100.txt
default: 继承(默认)
要求: 希望alice能够对/home以及以后在/home下新建的文件有读、写、执行权限
思路:
步骤一: 赋予alice对/home读、写、执行权限
setfacl -R -m u:alice:rwx /home
步骤二: 赋予alice对以后在/home下新建的文件有读、写、执行权限 (使alice的权限继承)
setfacl -m d:u:alice:rwx /home
3.3 高级权限suid,sgid,sticky
(1)高级权限的类型:
suid 4 //一般针对文件,会以文件的所有者执行
sgid 2 //一般针对目录,这样目录下的内容会继承属组
sticky 1 粘滞位 //一般针对目录,这样用户只能删除自己的文件
(2)设置特殊权限
a、字符
chmod u+s file
chmod g+s dir
chmod o+t dir
b、数字
chmod 4777 file
chmod 7777 file
chmod 2770 dir
chmod 3770 dir
3.4 进程掩码 mask umask
进程 新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
一般我们只会临时设置shell umask值,建议不要永久修改它的值。如何修改呢?