linux

hostname xxx         #临时修改
hostnamectl xxx      #永久生效
hostname             #查看hostname

uname -a             # Linux 一些信息

目录 #

pwd                  #当前目录的完整路径
cd xx                # 切换的xx 目录 (相对路径和绝对路径)
  • ls
ls [-aAdfFhilnrRSt] 文件名或目录名称.. 
ls [--color={never,auto,always}] 文件名或目录名称..
ls [--full-time] 文件名或目录名称..


-a	all, 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-A	同-a ,但不列出 “.” (目前目录) 及 “…” (父目录)
-l	以长格式显示目录下的内容列表,包括文件的权限、链接数、所有者名称和组所有者、文件大小、最后修改日期时间和文件/目录名称
-r	reverse,将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R	–recursive,连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-S	sort by file size。根据文件大小排序,而不是文件名
-t	sort by modification time,以文件修改时间排序(从最新开始排)
-d	仅列出目录本身,而不是列出目录内的文件数据(常用)
-f	直接列出结果,而不进行排序 (ls 默认以文件名排序)
-F	根据文件、目录等信息,给予附加数据结构,例如:*:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件
-g	像-l,但是不列出所有者
-G,	no-group, 不列出任何有关于组的信息
–author	打印出每一个文件的作者
-n	类似-l,用数字UID和GID代替名称
-h	将文件大小以人类较易读的方式(例如 GB KB 等等)列
-c	输出文件的ctime(文件状态最后更改的时间),并根据ctime排序
-C	由上至下的列出项目
--full-time	显示完整时间格式
--time	输出 access 时间或改变权限属性时间 (ctime)而非内容变更时间 (modification time)
--color=never	不要依据文件特性给予颜色显示
--color=always	显示颜色
  • cat
cat #命令用于连接和打印文件内容,支持显示行号、非空行号、特殊字符等。常用参数包括:

-n:显示行号,会在输出的每一行前加上行号。
-b:显示行号,但只对非空行进行编号。
-s:压缩连续的空行,只显示一个空行。
-E:在每一行的末尾显示$符号。
-T:将Tab字符显示为^I。
-v:显示一些非打印字符。
  • cat 反向输出
tac

组与用户 #

  • 相关文件
# 用户配置文件
/etc/passwd

#密码信息配置文件
/etc/shadow

# 组信息配置文件
/etc/group

# 系统用户组信息
/etc/group

groupname:password:GID:user_list
 
组名     密码       GID      用户列表

# 用户组密码信息
/etc/gshadow

查询命令 #

# 查询当前登录用户信息
whoami

# 查询指定用户信息
id username

# 查询所有用户信息
cat /etc/passwd

# 查询所有用户组信息
getent group

# 查询用户所属的用户组
groups username

# 查询用户的主用户组
id -g -n username

用户名令 #

  • 创建用户
useradd [选项] name
-c     指定一段注释性描述。
-d     目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g     用户组 指定用户所属的用户组。
-G     用户组,用户组 指定用户所属的附加组。
-s     Shell文件 指定用户的登录Shell。
-u     指定UID
  • 设置密码
passwd [选项] name
-d        清空密码
-l        锁定
-u        解锁
-S        查看锁定状态
  • 修改用户属性
usermod [选项] name
  • 删除用户账户
userdel   name
-r        删除账户并且将用户的宿主目录删除

组的命令 #

  • 组的创建
groupadd [选项] groupname
-g        指定GID创建用户组
  • 组的删除
groupdel groupname
  • 修改GID
groupmod -g GID groupname
  • 组添加用户
gpasswd [选项] 用户名 组名
-a         添加用户
-d         删除用户
-M         定义组内用户的列表

权限 #

  • Linux系统上对文件的权限有着严格的控制,如果想对某个文件执行某种操作,必须具有对应的权限方可执行成功。
  • Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
  • Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

rwx 对于目录和文件的区别

  • 目录
    • r 读取目录内文件列表的权限
    • w 对目录内文件进行新建,删除,重命名等操作的权限
    • x 进入目录的权限
  • 文件
    • r 读取文件内容的权限
    • w 修改文件内容的权限
    • x 执行该文件的权限

快速入门 #

更改文件权限 chmod

chmod [可选项] <mode> <file…>
[可选项]
	-c
	-f
	-v
	-R

[mode]
	[ugoa...][[+-=][rwxX]...][,...]
	[ugoa...]
	    u 表示该档案的拥有者,
	    g 表示与该档案的拥有者属于同一个群体(group)者,
	    o 表示其他以外的人,
	    a 表示所有(包含上面三者)。
	[+-=]
	    + 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
	[rwxX]
	    r 表示可读取,
	    w 表示可写入,
	    x 表示可执行,
	    X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

[file...]
    文件列表(单个或者多个文件、文件夹)
  • 设置所有用户可读取文件 a.conf
chmod ugo+r a.conf 
chmod a+r  a.conf
  • 设置 c.sh 只有 拥有者可以读写及执行
chmod u+rwx c.sh
  • 设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
chmod a+r,ug+w,o-w a.conf b.xml
  • 设置当前目录下的所有档案与子目录皆设为任何人可读写
chmod -R a+rw *

数字权限使用格式 #

在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,

如:

rwx = 4 + 2 + 1 = 7

rw = 4 + 2 = 6

rx = 4 +1 = 5

若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7

若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6

若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5

上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :

chmod <abc> file…

其中 a,b,c各为一个数字,分别代表User、Group、及Other的权限。 相当于简化版的 chmod u=权限,g=权限,o=权限 file… 而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限

  • 设置所有人可以读写及执行
chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file 或 chmod a=rwx file)
  • 设置拥有者可读写,其他人不可读写执行
chmod 600 file (等价于 chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )

更改文件拥有者 #

linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。

chown [可选项] user[:group] file…

使用权限:root

说明:
[可选项] : 同上文chmod user : 新的文件拥有者的使用者  group : 新的文件拥有者的使用者群体(group)
  • 设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
chown tom:users file d.key e.scrt
  • 设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
chown -R James:users *

ACL #

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

setfacl

setfacl [-bkRd] [{-m|-x} acl参数] 文件/目录名
-m :配置后面的 acl 参数给文件/目录使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除所有的 ACL 配置参数;
-k :移除默认的 ACL 参数;
-R :递归配置 acl;
-d :配置“默认 acl 参数”,只对目录有效,在该目录新建的数据会引用此默认值;

getfacl

getfacl 文件/目录名

为 tester 用户赋予读写 aclfile 文件的权限:

setfacl -m u:tester:rw aclfile
getfacl aclfile