postgresql – sudo su – postgres和sudo -u postgres有什么区
默认情况下,PostgreSQL用户在unix套接字上进行对等身份验证,其中unix用户必须与PostgreSQL用户相同.所以人们经常使用su或sudo成为postgres超级用户.
我经常看到人们使用如下构造: sudo su - postgres 而不是 sudo -u postgres -i 而且我想知道为什么.同样,我见过: sudo su - postgres -c psql 代替 sudo -u postgres psql 没有领先的sudo su版本会有一些意义,如果你在没有sudo的旧平台上.但是为什么在不太史前的UNIX或Linux上你会使用sudo su?
忘了sudo su
使用sudo su没有任何好处,这是人们习惯使用su时的一种不合时宜的习惯.当Linux发行版停止设置root密码并使sudo成为访问root帐户的唯一方法时,人们开始在前面处理sudo.他们只是使用sudo su而不是改变他们的习惯. (我是其中之一,直到最近才使用带有sudoers的盒子配置强迫我改变我的习惯). 使用sudo -u 对于登录shell,sudo -u postgres -i比sudo su – postgres更可取.它不要求用户在/ etc / sudoers中具有root访问权限,他们只需要有权成为用户postgres.它还允许您实施更好的访问控制. 用于命令执行 sudo -u postgres psql -c "SELECT 1" 优于其他选择: sudo su - postgres -c "psql -c "SELECT 1"" 因为你不必双重转义引号和其他shell元字符以及不需要root的其他安全优势.你可能不小心写了: sudo su - postgres -c psql -c "SELECT 1" 有时,这将无法正常工作. 最后,通过sudo设置环境变量更容易,例如 sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster 而不是通过su. (这里,需要PATH设置,以便initdb可以找到正确的postgres可执行文件). 所以.忘记su命令存在.你不再需要它了.为了打破习惯,将其别名为会打印错误的东西. (某些init和程序包设置脚本仍然使用su,因此您无法删除它). 也可以看看: > What’s the difference between “sudo su -” and “sudo -i”? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |