linux 目录 i权限,Linux权限管理之基本权限.md

>在Linux中一切皆文件

### 文件基本权限

* `-rw-r--r--`

* `-`文件类型 (-文件,d目录, l软连接)

* rw-(u所有者) r--(g所属组) r--(o其他人)

* r读权限 w写权限 x执行权限(execute)

#### chmod 命令

* `chmod [选项] 模式 文件名`

* `-R` 递归

* 模式

* `[ugoa][+-=][rwx]`

* `[mode=421]`

* 修改权限的方式

* chmod u+x test.log 赋予文件拥有者对某个文件的执行权限

* chmod g+w,o+w test.log 赋予文件所属组和其他用户文件写入权限,多个操作用`,`隔开

* chmod a=rwx test.log 赋予全部用户读写和执行权限,`=`直接赋值即可,不用在意原来的权限

>以上操作易用性不高,命令代码量略大,当操作的内容有差别的时候,不方便

* 权限的数字表示

* r --- 4

* w --- 2

* x --- 1

* 示例 (常用)

* `chmod 777 test.log` 赋予文件读写执行权限给全部用户

* `chmod 644 test.log` 赋予拥有者读写权限,所属组和其他用户只读权限

* `chmod 755 test.log` 赋予拥有者读写执行权限,所有者和所属组读权限和可执行权限

* `chmod 467 test.log` 这种权限赋予方式不合理,也不应该出现

#### 权限对文件的作用

* r:读取文件内容(cat more head tail)

* w:编辑,新增,修改文件内容(vi echo)

* 但是不包含删除文件权限,对文件有写权限,对其上一级目录没有写权限,不能删除

* x:可执行

#### 权限对目录的作用

* r:可以查询目录下的文件名(ls)

* w:具有修改目录结构的权限,如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)

* x:可以进入目录(cd)

>对文件来讲最高权限是x,对目录来讲最高权限是w ,所以对文件少赋予x权限,目录少赋予w权限;

对目录只能赋予 0(没有权限) 5(rx) 7(rwx) ,其他权限4,1,6没有任何意义

* 添加用户进行测试

```

useradd user1

passwd 123456

```

#### 修改文件的所有者

* `chown 用户名 文件名`

* `chown misty test.log`

>在实际操作过程中,超级用户如果要让一个用户拥有7权限,最合理的方式是直接将当前文件的拥有者修改成这个指定用户,防止为了让这个用户拥有7权限,而不得不赋予其他用户7权限的情况

#### 修改文件的所属组

* `chgrp 组名 文件名`

* `chgrp group1 test.log`

* 第二种方式 `chown 所有者:所属组 文件名`

* `chown root:root test.log`

* 让用户对文件拥有一定的权限

```

要求:拥有一个test目录

让misty拥有所有权限

让所有学员拥有查看权限

其他人不许查看这个目录

mkdir test #创建test目录

useradd misty # 添加一个用户

passwd 123456 # 设置密码

groupadd student #添加一个学生组

gpasswd -a user1 student #向学生组添加一个用户,用户之前已创建

useradd user2 # 添加一个用户 不设置密码

gpasswd -a user2 student # 向学生组添加第二个用户

chown misty:student test # 修改文件夹的所有者和所属组

chmod 750 test # 修改文件夹的权限,赋予拥有者最高权限,用户组读权限和执行权限(可查看可进入),其他用户不给权限

```

>分配文件基本权限时,核心原则:`在最小权限情况下能够实现要求即可`,直接赋予777是极其不负责任和不安全的行为

### 文件默认权限

* 创建文件之后直接赋予的权限就是默认权限

* `umask` 查看默认权限(umask值)

* 0022 默认umask值`0022`

* 第一位0:文件特殊权限

* 022 :文件默认权限

* 修改umask值 `umask umask值` ,临时生效,重启电脑丧失作用

* `umask 033`

* 永久修改umask值 `vi /etc/profile` 在环境变量配置文件里面修改umask值

* 文件的默认权限

* 文件的默认权限不能建立为执行文件,必须手工赋予执行权限,防止直接的执行权限所带来的安群隐患

* 所以文件默认权限最大为666

* 默认权限需要换算成字再相减(不是直接相减)

* 建立文件之后的默认权限 ,为`666` 减去`umask`值

![](image2/image26.png)

#### 目录的默认权限

* 目录的默认权限最大为777

* 默认权限需要换算成字母再相减

* 建立目录之后的默认权限,为777减去umask值

![](image2/image27.png)

* 修改umask值为0000

* 此时创建文件默认权限是666

* 此时创建目录额默认权限是777

* 普通用户的默认umask为0002,对应的权限是664

* root用户的UID为0,普通用户的UID大于500,小于500为管理员

### ACL权限

### 文件特殊权限

### 不可改变位权限

### sudo权限

>以上都是操作文件的权限,只有sudo是操作命令的权限(严格意义命令也是文件)

* root把本来只能超级用户执行的命令赋予普通用户执行

* sudo的操作对象是系统命令

#### sudo的使用

* `visudo` 实际修改的是`/etc/sudoers`文件

* `root ALL=[(ALL)] ALL` #用户名 被管理主机的地址 = (可使用的身份) 授权命令(绝对路径)

* `#%wheel ALL=[(ALL)] ALL` #%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

* `whereis [命令]` 查看命令的路径

* 例子1:

* 授权普通用户可以重启服务器

```

visudo

#这里也可以不指定身份

- user1 All=(ALL) /sbin/shutdown -r now # 这里写的越详细,用户的权限越小,越粗略,用户的权限越高因为命令以及命令的参数可以指定

:wq

# 切换成普通用户执行如下命令

su - user1 #切换成普通用户

sudo -l #查看可用的sudo命令

sudo /sbin/shutdown -r now #普通用户执行sudo赋予的命令

```

> 命令赋予的时候需要写绝对路径,普通用户执行的时候也需要写绝对路径;centos 6之后可以不用写绝对路径,做了相关的优化,但是在其他的发行版仍然需要

* 例子2 :

* 授权普通用户可以添加其他用户

```

visudo

- user1 ALL=/usr/sbin/useradd #授权添加用户的权限

- user1 ALL=/usr/bin/passwd #授权用户设定密码的权限 ,因为没有密码是无法登陆的

#查看用户是否添加成功

cat /etc/passwd

sudo /usr/sbin/useradd misty #添加用户

sudo /usr/bin/passwd misty #修改密码

#重复输入两次密码,设置完成

### 非常重要,在这里有一个巨大的隐患,因为权限设置太过于简单,导致权限过大,以至于可以修改root用户的密码

#补齐下面这句话,不允许设置root用户的密码,三句代码的顺序不能颠倒

- user1 ALL=/usr/bin/passwd[A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root

# 用户密码要包含字母,不能为""(不能直接passwd ,以sudo的话是以root身份修改密码),不能为root用户设置密码

### 重要:当以sudo执行命令的时候身份是root,如果passwd后面不带用户,代表可以修改当前用户身份的密码(sudo 为root身份)

```

* 例子三

* 不可以将sudo权限赋值给`vi`命令

```

### 查看保存密码的文件

/bin/vi /etc/shadow # 编辑shadow

ll /etc/shadow #普通用户这个文件根本没有权限

#但是一旦vi被赋予sudo权限,编辑shadow将加密的密码直接替换原来的,就可以修改密码,

```

* 超级管理员打开shadow 文件

![](image2/image28.png)

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux和PostgreSQL在远程权限方面是可以通过一系列配置来实现的。 首先,在Linux上,我们可以通过修改防火墙规则来控制对PostgreSQL服务器的远程访问权限。默认情况下,PostgreSQL的服务器监听5432端口,我们可以使用iptables或ufw命令来开放或关闭这个端口,限制远程访问的IP地址或IP段。 其次,在PostgreSQL的配置文件中,我们可以设置远程访问权限。通过编辑postgresql.conf文件,我们可以找到listen_addresses参数,该参数决定了服务器监听的IP地址。如果需要允许远程访问,我们可以将该参数设置为'*',表示接受来自任意IP地址的连接。 此外,还可以使用pg_hba.conf文件来配置访问控制规则。pg_hba.conf文件指定了客户端连接数据库时的身份验证规则。我们可以为不同的主机、用户和数据库设置不同的规则,以控制谁可以通过网络连接到PostgreSQL服务器。 在设置pg_hba.conf文件时,我们可以指定远程客户端的IP地址或IP段,访问数据库的用户名和密码,并设置具体的访问权限。例如,我们可以设置仅允许特定IP地址的用户以密码方式连接到特定数据库。 在完成以上配置后,我们还需要重启PostgreSQL服务器以使配置生效。通过这样的配置,我们可以针对不同的需求设置不同的远程访问权限,保障数据库的安全性。 总结起来,Linux和PostgreSQL提供了多种方式来实现远程访问控制,包括通过防火墙规则和PostgreSQL配置文件来限制对PostgreSQL服务器的远程访问权限。我们可以根据实际需求来进行相应的配置,以确保数据库的安全性和可访问性。 ### 回答2: 在Linux中,PostgreSQL是一种流行的关系型数据库管理系统,可以通过远程连接进行管理和操作。远程连接需要进行一些配置和授权才能实现。 首先,我们需要确保PostgreSQL服务器允许远程连接。在它的配置文件中,默认情况下,只允许本地连接。我们需要修改postgresql.conf文件,找到"listen_addresses"项,将其值设置为服务器的IP地址,或者设置为 "*",表示允许任何IP地址连接。 其次,我们需要为允许远程连接的用户设置权限。在pg_hba.conf文件中,可以找到用于控制连接访问权限的规则。我们添加一条规则,将远程客户端的IP地址、认证方法和访问权限设置为合适的值。例如,可以将以下内容添加到文件末尾: host all all 客户端IP地址/掩码 认证方法 访问权限 要注意的是,认证方法可以选择密码认证、身份证书认证等,根据实际情况选择合适的方式。访问权限可以设置为"trust"允许无需密码访问,或者"md5"要求输入密码进行认证。 最后,我们需要重启PostgreSQL服务以使配置生效。可以使用以下命令重启服务: sudo service postgresql restart 在完成上述配置后,我们就可以使用远程客户端连接到PostgreSQL服务器了。使用连接字符串指定服务器的IP地址、端口号、数据库名称、用户名和密码,即可成功连接。 需要注意的是,远程连接存在一定的安全风险。为了保障数据的安全性,我们应该限制允许连接的IP地址范围,使用安全的认证方法,并定期更新密码,以减少潜在的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值