用户及组管理
id user1 #查看用户user1
useradd user1 #创建新用户user1,useradd命令用于Linux中创建的新的系统用户账号,再用passwd设定帐号的密码。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
passwd user1 #设定user1的用户密码
userdel -r user1 #删除用户user1
gpasswd -a user1 root #把用户user1加入root组
gpasswd -d user1 root #把root组中用户user1删除
groupadd mysql #创建mysql用户组
su命令——用户切换
格式:su 【options】 【用户名】
options如下:
- 用户想要切换到root
-l 后面可以接用户名,可使用变换身份者的所有相关环境设置文件
-m 使用当前环境设置,而不重新读取新用户的设置文件
-c 仅进行一次命令,所以-c后面可以加命令
ls命令查看文件权限
格式:ls(选项)(目标文件)
终端输入:ls -l shell.text
显示:-rw-r--r-- 1 root root 0 Oct 19 12:21 shell.txt
注释:红色部分代表:所有者,rw(读写)权限。
黄色部分代表:所属组,r(只读)的权限。
蓝色部分代表:其他用户,r(只读)的权限。
chmod修改文件权限
u 即文件或目录的拥有者;
g 即文件或目录的所属群组;
o 其他用户;
a 所有用户(默认);
r 读取,数字代号为“4”;
w 写入,数字代号为“2”;
x 执行或切换,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
chmod u+x file 给file的属主增加执行权限
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式
chmod =r file 为所有用户分配读权限
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
文件ACL,访问控制列表
传统的权限仅有三种身份(owner,group,others)搭配三种权限(r,w,x),随着应用的发展,这些权限组合已不能适应现在复杂的文件系统权限控制要求。(对于一个文件,有一个用户不是所有者、也不在所有者组,然后单独给他设置权限,而不影响 其他用户)
例如,目录data的权限为:drwxr-xr—x,所有者与所属组均为root,在不改变所有者和所属组的前提下,要求用户test对该目录有完全访问权限(rwx),但又不能让其他有用完全权限(rwx),这种情况就只能使用acl访问控制列表权限来控制了。
命令:
getfacl:查看文件或目录的ACL设定内容
setfacl:设置文件或目录的ACL内容
命令格式:
# setfacl [选项] 要修改的权限 文件
命令选项:
-m :添加acl参数
-x :删除acl参数
-b :删除所有的ACL设定参数
-R :递归设置acl参数
设置格式如下
# setfacl -m u:test:rw 1.txt --为文件1.txt设置test用户可读写的acl权限
# mkdir /test/a -p
# cd /test
# touch 1.txt
# ll
总用量 0
-rw-r--r-- 1 root root 0 7月 8 21:41 1.txt
drwxr-xr-x 2 root root 6 7月 8 21:39 a
开启另一个终端,并切换之test用户测试1.txt是否可写
设置用户ACL权限
# setfacl -m u:user1:rwx 1.txt 多个用户用逗号隔开
# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:test:rwx 这里可以看到刚刚设置的acl权限
group::r--
mask::rwx
other::r--
# setfacl -m m::r 1.txt 设置ACL的mask (mask 掩码:允许的最高acl权限)
# file: 1.txt 查看1.txt的权限和之前有什么不同
# owner: root
# group: root
user::rw-
user:test:rwx #effective:r-- 这里会有一个警告,因为acl的权限大于了掩码的最高权限,此时的test用户依旧不可写
group::r--
mask::r--
other::r--
# setfacl -m d:user1:rw a/ 为目录设置默认ACL权限,设置后,在该目录内创建的文件依然继承该acl
# mkdir b
# touch b/1.txt
# touch a/1.txt
# getfacl a/1.txt
# file: a/1.txt
# owner: root
# group: root
user::rw-
user:test:rw-
group::r-x #effective:r--
mask::rw-
other::r--
# getfacl b/1.txt
# file: b/1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
# setfacl -x u:user1 1.txt 删除ACL权限
# setfacl -b 1.txt
# mkdir /test/b 递归设置acl参数
# touch /test/b/1.txt
# setfacl -m u:user1:rw /test/b
# getfacl /test/b
# file: b/
# owner: root
# group: root
user::rwx
user:user1:rw-
group::r-x
mask::rwx
other::r-x
# getfacl /test/b/1.txt
# file: b/1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
# setfacl -Rm u:user1:rw /test/b 递归设置acl权限后,目录下所有内容均会拥有相同的acl权限
# file: b/1.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--
cp命令———复制文件或目录命令。
格式:cp [选项] 源文件或目录 目标文件或目录
选项:
-r 用于目录的复制操作。
-f 不询问用户,强制复制。
-i 若目标文件存在,则询问是否覆盖。
-p 与文件属性一起复制。
-l 或 --link 对源文件建立硬连接,而非复制文件。
-v 详细显示进行的步骤。
mv命令———移动文件或目录、重命名命令。
格式:mv [选项] 源文件或目录 目标文件或目录
选项:
-f 强制直接移动而不询问。
-i 若目标文件存在,则询问是否覆盖。
-u 若目标文件存在,且源文件比较新,就更新。
-v
详细显示进行的步骤。
rm命令———删除文件或目录命令。
格式:rm [选项] 文件...
选项:
-f 强制删除
-i 交互模式,在删除前会询问用户是否操作
-r 递归删除,常用于目录删除
-v 详细显示进行的步骤。
file命令———显示指定文件类型,它是通过文件头部信息获取文件类型,也可用来辨别一些文件的编码格式。
格式:file [参数] 目标文件
(-) 普通文件
(d) 目录
(|) 符号连接
(c) 字符设备文件
(b) 快设备文件
(s) 套接字
(p) 命名管道
wget 命令
格式:wget http://url #直接下载目标文件
wget参数:
-O 下载到指定路径并改名;格式:wget -O 指定路径文件名 http://url
--spider 爬虫;检查网站是不是好的,不会下载。
-T 指定超时时间,单位秒。
--tries=2 指定重试的次数。
curl 命令
是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具,curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
格式:curl http://url #不下载,而是打印网页源代码在屏幕上
curl 参数
-I (大写的 'i') 打印响应的头信息
-L 跟随服务重定向,跳转到新的页面