资讯专栏INFORMATION COLUMN

【linux】与 用户、权限 有关的常用命令

Zhuxy / 2698人阅读

摘要:同理,对于用户群组的删除,分别有和,它们的也是一模一样的。修改已有用户用户组修改已有用户用户组有关的工作,分别交给以下两个命令对于,比较常用的参数有,它们分别修改用户的主群组额外加入的群组用户。要切换当前用户所登陆的群组,使用命令。

查看信息 查看文件、文件夹的filesystem metadata
# 查看**单个**文件、文件夹的权限信息
stat filename
# 或者使用以下命令来查看当前目录下**所有**文件、文件夹的权限信息
ls -la # 显示username、groupname
ls -na # 显示userid、groupid
ls -l每个列的含义:这篇博客。
查询用户、群组信息
# 查看当前用户(准确地说是当前bash进程的拥有者)的信息:
id

# 查看指定用户的信息:
id username
id userid

# 查看当前用户(准确地说是当前bash进程的拥有者)的所有群组:
groups

# 查看指定用户的所有群组(注意该命令必须输入username,不能是userid):
groups username

# 查看**所有**用户的信息:
cat /etc/passwd

# 查看**所有**群组的信息:
cat /etc/group
current group

执行id命令以后你会看到返回结果包括gid和groups。关于gid 与groups 的区别:gid只是当前登陆群组, 而groups列出了用户所在的所有群组。用户所在的群组可以有很多,但是在任何一个时刻,一个用户只能登陆一个群组。后面面会介绍newgrp命令,使用它,用户可以切换到其他群组。

primary group 和 supplementary group

用户所在的群组可以有很多,可以指定其中一个为主群组(primary group),剩下的都是supplementary group。主群组是 GUI登陆、打开命令行窗口、ssh登陆 以后的默认登陆群组
修改primary group和supplementary group的usermod命令下面会讲到。

What is the difference between primary group and secondary group in Ubuntu?
Real User ID, Effective User ID, Saved User ID

在查看一些命令的manuals时(比如id),你可能会注意到userid还分为Real User ID, Effective User ID, Saved User ID三种。每个进程的描述表(process descriptor table)都存储了这三种UID。

Linux进程权限的研究——real user id, effective user id, saved set-user-id
User_identifier - wikipedia
Difference between Real User ID, Effective User ID and Saved User ID

查看系统中所有的进程以及进程的拥有者
ps aux

ps命令非常强大,几乎能给你所有需要的进程信息!设置几个参数就能让它输出我们想要的进程信息:

ps --pid 25138 -O uid,uname,gid,group,ppid

上面的参数表示,我要查看pid为6685的进程,并且除了默认的列以外,多展示几列:uid,uname,gid,group,ppid
输出如下:

在ps manuals中,能找到这个命令的更多用法、更多可以展示的列:
在docker容器内使用ps命令

docker容器内的bash使用ps命令时,很有可能会提示你ps命令不存在,这是因为docker image经常精简掉了ps程序(毕竟docker容器中一般只运行一个进程)。这个时候使用

apt-get update && apt-get install procps

来安装ps

在中国连接国外的Ubuntu软件源服务器可能会非常慢,这时你应该改一下ubuntu的软件源(通过系统设置就能改)。
如果你在docker容器内使用apt,你需要手动改变软件源。先通过Ubuntu Sources List Generator定制符合你需要的sources.list文件(至少要选择"Main - Officially supported software."这一项),然后将这个文件放在容器内的路径/etc/apt/sources.list(可以使用命令docker cp ./sources.list 容器名称:/etc/apt/sources.list或者Dockerfile的COPY ./sources.list /etc/apt/sources.list指令)。
修改文件元信息 chmod修改文件、文件夹的权限
# 修改文件、文件夹的权限(如果要修改不属于当前用户的文件,还需要使用sudo)
chmod 755 filename

# 递归修改文件夹、文件夹内所有文件的权限(注意要使用sudo和-R)
sudo chmod 777 -R /path/to/directory
chown修改文件的拥有者、拥有群组

执行这种修改时,必须使用sudo。

# 修改文件/文件夹的owner
sudo chown username filename

# 修改文件/文件夹的group
sudo chown :groupname filename

# 同时修改文件/文件夹的owner和group
sudo chown username:groupname filename

# 加上-R参数,能够递归修改文件夹、文件夹内的所有文件!

上面的username、groupname也可以用userid、groupid代替。使用userid、groupid有一个很方便的地方:userid、groupid可以不存在于当前系统中,这在使用docker bind-mount volume的时候很有用!

参考ubuntu doc。
修改用户、群组信息 新建和删除

新建用户、群组有关的工作,分别交给以下两个命令:
adduser
addgroup

adduser和addgroup的manuals页面其实是一模一样的,它们的功能是很相似的,只不过adduser对应于user,addgroup对应于group。
使用这两个命令可以做到这几件事:

新建一个normal user

adduser  [options]  [--home  DIR]  [--shell  SHELL]  [--no-create-home]
  [--uid ID] [--firstuid ID] [--lastuid ID] [--ingroup GROUP | --gid  ID]
  [--disabled-password]      [--disabled-login]      [--gecos      GECOS]
  [--add_extra_groups] [--encrypt-home] user

新建一个system user

adduser --system [options] [--home DIR] [--shell  SHELL]  [--no-create-
home]  [--uid  ID]  [--group | --ingroup GROUP | --gid ID] [--disabled-
password] [--disabled-login] [--gecos GECOS] user

新建一个user group

addgroup [options] [--gid ID] group

新建一个system group

addgroup --system [options] [--gid ID] group

将一个已经存在的user加入到一个已经存在的group中

adduser [options] user group

这五种功能的解释,以及每种功能可以使用的参数,都在manuals有详细的解释。

同理,对于用户、群组的删除,分别有deluser和delgroup,它们的manuals也是一模一样的。

修改已有用户、用户组

修改已有用户、用户组有关的工作,分别交给以下两个命令:
usermod
groupmod

对于usermod,比较常用的参数有--gid --groups --uid,它们分别修改用户的 主群组、额外加入的群组、用户id 。

对于groupmod,比较常用的参数有--gid --new-name,它们分别修改群组的id、群组的名称。

切换用户、切换群组 切换用户

在bash中切换用户以后,通过这个bash执行的子程序,会以新的用户身份来完成。

注意,仅仅是当前bash进程的拥有者改变了。并不像windows那样注销整个系统再以新用户登陆!

如这个回答所讲,在命令行中切换用户只需要通过以下命令:

su - username
切换群组

前面已经说过,一个用户可以加入多个群组,但是任何一个时刻只能登陆一个群组。要切换当前用户所登陆的群组,使用newgrp命令。

newgrp - groupname
练手教程

新建用户并加入sudo用户组

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27334.html

相关文章

  • linux 用户权限 有关常用命令

    摘要:同理,对于用户群组的删除,分别有和,它们的也是一模一样的。修改已有用户用户组修改已有用户用户组有关的工作,分别交给以下两个命令对于,比较常用的参数有,它们分别修改用户的主群组额外加入的群组用户。要切换当前用户所登陆的群组,使用命令。 查看信息 查看文件、文件夹的filesystem metadata # 查看**单个**文件、文件夹的权限信息 stat filename # 或者使用以...

    Noodles 评论0 收藏0
  • 读书笔记-linux私房菜

    摘要:私房菜阅读笔记整理计算机的五大单元输入输出内部的控制单元和算数逻辑单元内存主要作用,管理和运算算数逻辑单元,控制单元前者负责程序运算和逻辑判断后者负责协调各个组件与各个单元之间的工作的重点在与运算和判断,这些数据来自于内存内存则从输 showImg(https://user-gold-cdn.xitu.io/2018/8/30/16589ca3f1ed8032?w=1334&h=738...

    robin 评论0 收藏0
  • 运维专家带你系统性学linux系列-初级

    摘要:在中国市场,比红帽多,因为开源嘛红帽呢因为售后比较贵,使用的企业不多,大多数是银行国企使用,私企基本上都是三,作为发行版中的后起之秀,在短短几年时间里便迅速成长为从初学者到实验室用计算机服务器都适合使用的发行版。 0.写在前面:       这篇文章主要写给 Linux 初学者的,文章中会分...

    xcold 评论0 收藏0
  • Linux常用命令

    摘要:实例查看命令是否存在,执行哪个查看查看显示不存在,因为是内建命令,而查找显示是中的命令查看当前配置或使用查看所有环境变量及对应值命令命令只能用于程序名的搜索,而且只搜索二进制文件参数说明文件参数和源代码文件参数。文章出处:[文章出处](https://www.cnblogs.com/gaoju...) 1、ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含...

    jas0n 评论0 收藏0
  • Linux文件权限目录配置

    摘要:一常用命令列出所有文件详细的权限与属性包括隐藏文件改变文件的所属用户组改变文件的所有者递归调用其实它也可以在修改所有者时修改所属组也可以单独用来修改所属组修改文件的权限数字类型修改权限符号类型修改权限查看相关版本信息查看标准化 一.常用命令 1.ls -al :列出所有文件详细的权限与属性(包括隐藏文件) 2.chgrp :改变文件的所属用户组 3.chown : 改变...

    A Loity 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<