Skip to content

Both.org

News, Opinion, Tutorials, and Community for Linux Users and SysAdmins

Primary Menu
  • About Us
  • Computers 101
    • Hardware 101
    • Operating Systems 101
  • End of 10 Events
    • Wake Forest, NC, — 2025-09-20
  • Linux
    • Why I use Linux
    • The real reason we use Linux
  • My Linux Books
    • systemd for Linux SysAdmins
    • Using and Administering Linux – Zero to SysAdmin: 2nd Edition
    • The Linux Philosophy for SysAdmins
    • Linux for Small Business Owners
    • Errata
      • Errata for The Linux Philosophy for SysAdmins
      • Errata for Using and Administering Linux — 1st Edition
      • Errata for Using and Administering Linux — 2nd Edition
  • Open Source Resources
    • What is Open Source?
    • What is Linux?
    • What is Open Source Software?
    • The Open Source Way
  • Write for us
    • Submission and Style guide
    • Advertising statement
  • Downloads
  • Home
  • Intro to the Linux chgrp and newgrp commands
  • Command Line
  • In Depth
  • Linux

Intro to the Linux chgrp and newgrp commands

Alan Formy-Duval June 27, 2024 5 minutes read
th-2358250818

In a recent article, I introduced the chown command, which is used for modifying ownership of files on systems. Recall that ownership is the combination of the user and group assigned to an object. The chgrp and newgrp commands provide additional help for managing files that need to maintain group ownership.

Using chgrp

The chgrp command simply changes the group ownership of a file. It is the same as the chown :<group> command. You can use:

$chown :alan mynotes

or:

$chgrp alan mynotes

Recursive

A few additional arguments to chgrp can be useful at both the command line and in a script. Just like many other Linux commands, chgrp has a recursive argument, -R. You will need this to operate on a directory and its contents recursively, as I’ll demonstrate below. I added the -v (verbose) argument so chgrp tells me what it is doing:

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml
# chgrp -vR delta conf 
changed group of 'conf/conf.xml' from alan to delta
changed group of 'conf' from alan to delta

Reference

A reference file (–reference=RFILE) can be used when changing the group on files to match a certain configuration or when you don’t know the group, as might be the case when running a script. You can duplicate another file’s group (RFILE), referred to as a reference file. For example, to undo the changes made above (recall that a dot [.] refers to the present working directory):

$ chgrp -vR --reference=. conf

Report changes

Most commands have arguments for controlling their output. The most common is -v to enable verbose, and the chgrp command has a verbose mode. It also has a -c (–changes) argument, which instructs chgrp to report only when a change is made. Chgrp will still report other things, such as if an operation is not permitted.

The argument -f (–silent, –quiet) is used to suppress most error messages. I will use this argument and -c in the next section so it will show only actual changes.

Preserve root

The root (/) of the Linux filesystem should be treated with great respect. If a command mistake is made at this level, the consequences can be terrible and leave a system completely useless. Particularly when you are running a recursive command that will make any kind of change—or worse, deletions. The chgrp command has an argument that can be used to protect and preserve the root. The argument is –preserve-root. If this argument is used with a recursive chgrp command on the root, nothing will happen and a message will appear instead:

[root@localhost /]# chgrp -cfR --preserve-root a+w /
chgrp: it is dangerous to operate recursively on '/'
chgrp: use --no-preserve-root to override this failsafe

The option has no effect when it’s not used in conjunction with recursive. However, if the command is run by the root user, the permissions of / will change, but not those of other files or directories within it:

[alan@localhost /]$ chgrp -c --preserve-root alan /
chgrp: changing group of '/': Operation not permitted
[root@localhost /]# chgrp -c --preserve-root alan /
changed group of '/' from root to alan

Surprisingly, it seems, this is not the default argument. The option –no-preserve-root is the default. If you run the command above without the “preserve” option, it will default to “no preserve” mode and possibly change permissions on files that shouldn’t be changed:

[alan@localhost /]$ chgrp -cfR alan /
changed group of '/dev/pts/0' from tty to alan
changed group of '/dev/tty2' from tty to alan
changed group of '/var/spool/mail/alan' from mail to alan

About newgrp

The newgrp command allows a user to override the current primary group. newgrp can be handy when you are working in a directory where all files must have the same group ownership. Suppose you have a directory called share on your intranet server where different teams store marketing photos. The group is share. As different users place files into the directory, the files’ primary groups might become mixed up. Whenever new files are added, you can run chgrp to correct any mix-ups by setting the group to share:

$ cd share
ls -l
-rw-r--r--. 1 alan share 0 Aug  7 15:35 pic13
-rw-r--r--. 1 alan alan 0 Aug  7 15:35 pic1
-rw-r--r--. 1 susan delta 0 Aug  7 15:35 pic2
-rw-r--r--. 1 james gamma 0 Aug  7 15:35 pic3
-rw-rw-r--. 1 bill contract  0 Aug  7 15:36 pic4

I covered setgid mode in my article on the chmod command. This would be one way to solve this problem. But, suppose the setgid bit was not set for some reason. The newgrp command is useful in this situation. Before any users put files into the share directory, they can run the command newgrp share. This switches their primary group to share so all files they put into the directory will automatically have the group share, rather than the user’s primary group. Once they are finished, users can switch back to their regular primary group with (for example):

newgrp alan

Conclusion

It is important to understand how to manage users, groups, and permissions. It is also good to know a few alternative ways to work around problems you might encounter since not all environments are set up the same way.

Tags: chgrp command line newgrp

Post navigation

Previous: Screencasts for usability testing
Next: How many usability testers do you need?

Related Stories

Typewriter-lead
  • Books
  • Linux
  • Printing
  • Using and Administering Linux

Book Update — Chapter 26, Printers

David Both May 1, 2026
connections_wires_sysadmin_cable
  • Linux
  • Networking
  • Router

How to Make your Linux Box Into a Router

David Both April 29, 2026
f44-01-day-cropped
  • Fedora
  • Linux
  • Upgrades

Fedora 44 Released

David Both April 28, 2026

System upgrades this Sunday, May 3

Tools illustrationFedora 44 was released this week and I’ve upgraded all my systems except for the two that directly affect Both.org. I’ll be upgrading the hosts for my server and firewall to Fedora 44 this Sunday afternoon, May 3.

Both.org will be down for most of the afternoon for these upgrades.

Thanks for your patience.

Random Quote

Adding more programmers to a late software project makes it later.

— Brook’s Law

Why I’ve Never Used Windows

On February 12 I gave a presentation at the Triangle Linux Users Group (TriLUG) about why I use Linux and why I’ve never used Windows.

Here’s the link to the video: https://www.youtube.com/live/uCK_haOXPFM 

Why there’s no such thing as AI

Last October at All Things Open (ATO) I was interviewed by Jason Hibbits of We Love Open Source. It’s posted in the article “Why today’s AI isn’t intelligent (yet)“.

Technically We Write — Our Partner Site

Our partner site, Technically We Write, has published a number of articles from several contributors to Both.org. Check them out.

Technically We Write is a community of technical writers, technical editors, copyeditors, web content writers, and all other roles in technical communication.

Subscribe to Both.org

To comment on articles, you must have an account.

Send your desired user ID, first and last name, and an email address for login (this must be the same email address used to register) to subscribe@both.org with “Subscribe” as the subject line.

You’ll receive a confirmation of your subscription with your initial password as soon as we are able to process it.

Administration

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

License and AI Statements

Both.org aims to publish everything under a Creative Commons Attribution ShareAlike license. Some items may be published under a different license. You are responsible to verify permissions before reusing content from this website.

The opinions expressed are those of the individual authors, not Both.org.

You may not use this content to train AI.

 

Advertising Statement

Both.org does not sell advertising on this website.


Advertising may keep most websites running—but at Both.org, we’re committed to keeping our corner of the web ad-free. Both.org does not sell advertising on the website. Nor do we offer sponsored articles at this time. We’ll update this page if our position on sponsorships changes.

We want to be open about how the website is funded. Both.org is supported entirely by David Both and a few other dedicated individuals.

 

 

Copyright © All rights reserved. | MoreNews by AF themes.